有時(shí)候我們?cè)诓樵償?shù)據(jù)庫(kù)時(shí),需要以查詢結(jié)果為查詢條件進(jìn)行關(guān)聯(lián)查詢。
在mybatis 中通過(guò) association 標(biāo)簽(一對(duì)一查詢,collection 一對(duì)多 查詢) 實(shí)現(xiàn)延遲加載子查詢
1 | <resultMap id= "xxxMap" type= "xxxx.bean.xxx" extends= "zzzzMap" > |
2 | <association property= "destName" javaType= "java.lang.String" select = "xxx.dao.xxxDao.getBySource" |
3 | column = "{sourceTarget=id,sourceType=cmdb_type}" /> |
4 | </resultMap> |
解釋:
定義 xxxMap 繼承 zzzzMap 類型為 xxxx.bean.xxx 實(shí)體。
然后通過(guò) association 標(biāo)簽(一對(duì)一查詢,collection 一對(duì)多 查詢)。
select 子查詢標(biāo)簽,值為查詢的dao 層的方法。
column 為 傳遞到select 查詢里的參數(shù),sourceTarget=id (sourceTarget 為子查詢方法的參數(shù),id 為父查詢的記錄id 用于傳遞到子查詢中作為sourceTarget 的值)
property=”destName” 將查詢的結(jié)果映射到父查詢的 resultMap 的 destName 屬性
javaType=”java.lang.String” 查詢結(jié)果的類型,通常是一個(gè)bean實(shí)體
子查詢對(duì)應(yīng)的dao層
1 | String getBySource(@Param( "sourceTarget" ) int sourceTarget, @Param( "sourceType" ) String sourceType); |
2 |
3 | < select id= "getBySource" resultMap= "xxxMap" > |
4 | SELECT name FROM xxx_relation |
5 | WHERE source_target = #{sourceTarget} and source_type = #{sourceType} |
6 | </ select > |
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)服務(wù)器之家的支持。