使用mybatis進行多表聯查


一.使用mybatis的基本步驟

1.導入jar包

2.配置文件

3.使用配置文件完成操作

 

二.實戰演習

    需求:教師表里有教師id和教師姓名 學生表里有學生id,姓名,年齡,教師id

     一個教師有多個學生,一個學生只有一個教師,現在需要顯示學生表的學生信息和教師姓名

1.導入jar包

2.導入配置文件,mybatis和log4j都是寫了一次以后隨便用

這些都是寫死了的,直接配好即可

三.開始多表聯查

1.業務裝配方式,分為兩步,

1.1查詢所有的學生,

1.2根據學生的tid得到教師的信息存入學生類中

得到結果為

完成.這是簡化版的,直接在test類中顯示得到的數據,本來應該寫在業務層,傳給控制層,在視圖層顯示

 

2.ResultMapper n+1方式

上面的寫法很好理解,但是很繁瑣,需要寫兩遍sql語句

而使用ResultMapper 可以在查詢student時跳轉至查詢teacher語句.一句搞定

用到的類有Teacher中的selTeaByTid Student類中的selStuRm.其意義為,查詢所有學生,根據注入的屬性跳轉到根據tid查詢所有的教師,association標簽表示學生和老師是一對一關系.學生是主語.

如果是根據教師來查學生,就是一對多關系,使用的標簽就是collection.意義都是一樣的,就是帶着值跳轉到執行語句

這個方法其實也使用了兩句sql語句

還是兩次單表查詢,訪問數據庫2次

3.聯合查詢

其實和上面一樣,只是sql語句不再是單表查詢了,而是雙標聯查.ResultMapper也不再是跳轉,而是將兩個表都拿來做操作

 

 在association內再添加聯合查詢的另一個表.得到相同的結果

回過頭來看,ResultMapper n+1方式不如業務裝載方式直觀,不如聯合查詢訪問次數少,是個中間的存在

在sql語句使用熟練的情況下,還是選聯合查詢好...

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM