一對一映射查詢
1、資料庫執行腳本:
這裡使用2張表,學生表t_student、位址表t_address,示範查詢學生時查詢出對應的位址對象,首先是StudentDao:
Student實體類:
Address實體類:
AddressDao:
StudentMapper.xml映射檔案:
1)、直接result屬性映射
這裡直接配置對應property屬性,column為資料庫對應的字段名稱,property為javabean對應的字段,這裡使用address.id,mybatis會自動為我們進行封裝,封裝到Student實體的Address屬性上。
junit測試如下:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CNmZDakVWcrhjMvwFM2UTM0ETMtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
2)、Association和ResultMap形式:
3)、第二種方式映射時,Address的resultMap嵌套在Student的映射檔案中,不利于代碼的複用,改進版:
這裡使用association進行關聯映射,column為Student實體對應的表中關聯address的字段名稱,select表示該字段值通過其它映射語句直接查詢傳回,傳的id參數即這裡的addressId,AddressMapper.xml:
一對多映射查詢
1、資料導入:
建立年級表t_grade,年級對學生為一對多關系。
首先是根據年級查詢該年級下的所有學生:
1)、建立Grade實體類:
通過students執行個體屬性關聯,然後是GradeDao接口實作:
隻有一個方法findById,這裡查詢時會順帶查出該年級下的所有學生資訊,GradeMapper映射檔案如下:
mybatis多對一關聯使用collection标簽實作,column為Grade實體對應的表的字段,select表示使用該字段進行關聯查詢,StudentDao的findByGradeId具體實作如下:
首先是Dao層:
然後是映射檔案:
然後是StudentDao對應的映射檔案StudentMapper:
這裡Student配置了一個grade屬性,目的是後邊查詢學生順帶查詢出其所屬的班級資訊,Student實體具體實作:
junit測試部分(根據學生查詢對應年級資訊):
junit測試部分(根據年級資訊查詢對應學生資訊):