1. 程式人生 > >MyBatis多表查詢操作——XML(一對多)

MyBatis多表查詢操作——XML(一對多)

題目:使用Mybatis,使用XML方式查詢表中資料(一對多,在原來單表的基礎上修改)
單表查詢操作連結

一、思路:

思路(實體類+實體類對映檔案+mybatis主配置檔案+測試類):
我們的目標是要通過一條sql語句,把兩張表裡面的資料查詢出來。

第一:改造我們的實體類
1、給Person類加個集合屬性,該集合的資料型別為Food類型別
2、實體類要實現序列化介面(Serializable)
3、Food實體類多了一個Person類型別的屬性

第二:寫person的實體類對映檔案
1、特別注意:以前我們寫的select元素的返回值型別是單個實體類型別,而現在改成了自定義返回值型別,用resultMap表示。resultType改成resultMap。
2、然後再自定義resultMap的內容。
定義resultMap裡面的內容是重點,務必掌握

第三:主配置檔案裡面多了一項Food實體類的別名配置

第四:編寫測試類,把查詢的結果列印輸出顯示

二、實際操作

第一步:在原來單表的基礎上,再建立一張資料表,名字為food;該表具有4個欄位,分別是整形的id;整形的pid;varchar型別的fname;varchar型別的taste。

Create table food(id int,pid int,name varchar(10),taste varchar(10));

Insert into food(id,pid,name,taste) values(1,17,‘蘋果’,‘甜味’);
//新增多個
在這裡插入圖片描述

第二步:在原來單表的基礎上,在bean包下面新建一個Food類,該類的屬性和建立表的欄位一致。並給他們get、set方法。
注意

:1、給Person類加個集合屬性,該集合的資料型別為Food類型別
2、實體類要實現序列化介面(Serializable)
3、Food實體類多了一個Person類型別的屬性
在這裡插入圖片描述
在這裡插入圖片描述

第三步:配置personMapper.xml檔案。
1、注意:以前我們寫的select元素的返回值型別是單個實體類型別,而現在改成了自定義返回值型別,用resultMap表示。resultType改成resultMap。
2、然後再自定義resultMap的內容。

在這裡插入圖片描述

第四步:配置personConfig.xml主配置檔案(主配置檔案裡面多了一項Food實體類的別名配置)
在這裡插入圖片描述

第五步:更改測試類
在這裡插入圖片描述

結果:
在這裡插入圖片描述

總結:定義resultMap裡面的內容是重點,務必掌握(有興趣的同學可去多學習)