聽聽聽 鑰宨batis榪欐柟闈㈠氨姣旇緝閫婅壊浜嗭紝涓嶈繃瀵逛簬涔熸敮鎸佺畝鍗曠殑鍏寵繛鏌ヨ錛屽1瀵?錛屽拰1瀵瑰銆傚浜庝竴鑸殑鎯呭喌鏉ヨ錛岃繖涓ょ宸茬粡瓚沖浜嗭紝褰撶劧涓嶈兘灞傚彔鏇存柊鏄竴涓己闄鳳紝鐪嬩簡鍗婂ぉ鏂囨。錛屼篃娌℃湁鎵懼埌瀵硅薄涔嬮棿鐨勫眰鍙犳洿鏂幫紝浼拌鏄笉鏀寔銆?br />聽聽聽 浠ュ墠鐨勭増鏈琲batis澶勭悊鍏寵繛鏄氳繃鎵ц涓ゆsql鏉ュ疄鐜扮殑錛屽涓嬬殑瀹炰緥錛?br />聽聽聽 涓瀵瑰鍏寵仈錛?br />聽
<sqlMap namespace="User">
<typeAlias alias="user" type="com.ibatis.sample.User"/>
<typeAlias alias="address" type="com.ibatis.sample.Address"/>
<resultMap id="get-user-result" class="user">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="sex" column="sex"/>
<result property="addresses" column="id" select="User.getAddressByUserId"/>
</resultMap>
<select id="getUsers" parameterClass="java.lang.String" resultMap="get-user-result">
<![CDATA[
select id,name,sex
from t_user
where id = #id#
]]>
</select>
<select id="getAddressByUserId" parameterClass="int" resultClass="address">
<![CDATA[
select address,zipcode
from t_address
where user_id = #userid#
]]>
</select>
</sqlMap>聽聽 聽
榪欓噷閫氳繃鍦╮esultMap 涓畾涔夊祵濂楁煡璇etAddressByUserId錛屾垜浠疄鐜頒簡鍏寵仈鏁版嵁鐨勮鍙栥?br />闇瑕佹敞鎰忕殑鏄紝榪欓噷鏈変竴涓綔鍦ㄧ殑鎬ц兘闂錛屼篃灝辨槸鎵璋撯渘+1鈥漇elect闂銆?br />涓瀵逛竴鍏寵仈錛?br />瀵逛簬榪欑鎯呭喌錛屾垜浠彲浠ラ噰鐢ㄤ竴嬈elect涓ゅ紶琛ㄧ殑鏂瑰紡錛岄伩鍏嶈繖鏍風殑鎬ц兘寮閿錛堝亣璁句笂闈㈢ず渚嬩腑錛屾瘡涓猆ser 鍙湁涓涓搴旂殑Address璁板綍錛夛細
聽
<resultMap id="get-user-result" class="user">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="sex" column="sex"/>
<result property="address" column="t_address.address"/>
<result property="zipCode" column="t_address.zipcode"/>
</resultMap>
<select id="getUsers" parameterClass="java.lang.String" resultMap="get-user-result">
<![CDATA[
select *
from t_user,t_address
where t_user.id=t_address.user_id
]]>
</select>
聽聽聽 聽
鍦ㄧ幇鍦ㄧ殑鐗堟湰涓紝瀵逛簬n+1闂錛宨batis宸茬粡寰堝ソ鐨勮В鍐充簡銆傚涓嬬殑閰嶇疆錛?br />涓瀵逛竴
聽
<resultMap id=鈥漡et-product-result鈥?class=鈥漜om.ibatis.example.Product鈥?gt;
<result property=鈥漣d鈥?column=鈥漃RD_ID鈥?>
<result property=鈥漝escription鈥?column=鈥漃RD_DESCRIPTION鈥?>
<result property=鈥漜ategory鈥?resultMap=鈥済et-category-result鈥?/>
</resultMap>
<resultMap id=鈥漡et-category-result鈥?class=鈥漜om.ibatis.example.Category鈥?gt;
<result property=鈥漣d鈥?column=鈥滳AT_ID鈥?/>
<result property=鈥漝escription鈥?column=鈥滳AT_DESCRIPTION鈥?/>
</resultMap>
<select id=鈥漡etProduct鈥?parameterClass=鈥漣nt鈥?resultMap=鈥漡et-product-result鈥?gt;
select *
from PRODUCT, CATEGORY
where PRD_CAT_ID=CAT_ID
and PRD_ID = #value#
</select>聽聽 聽
鍙互浣跨敤鍐呭湪鐨剅esultMap鏉ヨВ鍐蟲闂銆?br />鍚屾牱涓瀵瑰濡備笅錛?
聽
<sqlMap namespace="ProductCategory">
<resultMap id=鈥漜ategoryResult鈥?class=鈥漜om.ibatis.example.Category鈥?groupBy=鈥漣d鈥?gt;
<result property=鈥漣d鈥?column=鈥滳AT_ID鈥?>
<result property=鈥漝escription鈥?column=鈥滳AT_DESCRIPTION鈥?>
<result property=鈥漰roductList鈥?resultMap=鈥漃roductCategory.productResult鈥?>
</resultMap>
<resultMap id=鈥漰roductResult鈥?class=鈥漜om.ibatis.example.Product鈥?gt;
<result property=鈥漣d鈥?column=鈥漃RD_ID鈥?>
<result property=鈥漝escription鈥?column=鈥漃RD_DESCRIPTION鈥?>
</resultMap>
<select id=鈥漡etCategory鈥?parameterClass=鈥漣nt鈥?resultMap=鈥漜ategoryResult鈥?gt;
select C.CAT_ID, C.CAT_DESCRIPTION, P.PRD_ID, P.PRD_DESCRIPTION
from CATEGORY C
left outer join PRODUCT P
on C.CAT_ID = P.PRD_CAT_ID
where CAT_ID = #value#
</select>
</sqlMap>聽聽 聽
娉ㄦ剰錛岄渶瑕佷嬌鐢ㄥ鍔爂roupBy灞炴ф潵鍒嗙被

]]>