使用註解實現複雜映射查詢數據
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,就像百度知道,登錄後用戶名是需要顯示出來的,此屬性用到的機率極大,要馬上到數據庫查,用急加載;
而用戶地址大多數情況下不需要顯示出來,只有在查看用戶資料是才需要顯示,需要用了才查數據庫,用懶加載就好了。所以,並不是一登錄就把用戶
的所有資料都加載到對象中,於是有了這兩種加載模式。