一.使用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語句使用熟練的情況下,還是選聯合查詢好...