使用MyBatis註解實現複雜映射查詢數據

使用註解實現複雜映射查詢數據
1.使用註解實現複雜映射開發
之前我們在映射文件中通過配置 、、 來實現複雜關係映射。

使用註解開發後,我們可以使用 @Results、@Result,@One、@Many 註解組合完成複雜關係的配置。

下圖爲註解重點,請記住:

 

1.一對一查詢

@Result(one = @One(select = "com.weihong.mapper.UserMapper.findUserById") ,property = "user" , javaType = com.weihong.domain.User.class , column = "uid")

其中column代表需要傳入的參數

2.一對多

@Result(column = "id" ,many = @Many(select = "com.weihong.mapper.OrdersMapper.findByUid"), property = "ordersList" ,  javaType = List.class )

3.多對多

@Result(column = "id" , many = @Many ( select = "com.weihong.mapper.RoleMapper.getUserRoleInfo" , fetchType = FetchType.EAGER ) , property = "roleList" ,javaType = List.class)

4.註解延遲加載
不管是一對一還是一對多 ,在註解配置中都有fetchType的屬性

fetchType = FetchType.LAZY 表示懶加載
fetchType = FetchType.EAGER 表示立即加載
fetchType = FetchType.DEFAULT 表示使用全局配置

  • FetchType.LAZY:懶加載,加載一個實體時,定義懶加載的屬性不會馬上從數據庫中加載。
  • FetchType.EAGER:急加載,加載一個實體時,定義急加載的屬性會立即從數據庫中加載。
  • 比方User類有兩個屬性,name跟address,就像百度知道,登錄後用戶名是需要顯示出來的,此屬性用到的機率極大,要馬上到數據庫查,用急加載;
    而用戶地址大多數情況下不需要顯示出來,只有在查看用戶資料是才需要顯示,需要用了才查數據庫,用懶加載就好了。所以,並不是一登錄就把用戶
    的所有資料都加載到對象中,於是有了這兩種加載模式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章