MyBatis的SQL映射文件
1.使用MyBatis實現條件查詢
(1)sql映射文件
- mapper:映射文件的根元素節點,只有一個屬性namespace,其作用如下:
<1>用於區分不同的mapper,全局唯一
<2>綁定DAO接口,即面向接口編程。當namespace綁定某一接口之後,可以不用寫該接口的實現類,MyBatis會通過接口的完整限定名查找到對應的mapper配置來執行SQL語句。因此namespace的命名必須要跟接口同名。
- cache:配置給定命名空間的緩存
- cache-ref:從其他命名空間引用緩存配置
- resultMap:用來描述數據庫結果集和對象的對應關系
- sql:可以重用的SQL塊,也可以被其他語句引用
- insert:映射插入語句
- update:映射更新語句
- delete:映射刪除語句
- select:映射查詢語句
2.使用resultMap完成查詢結果的展現
(1)resultType
resultType直接表示返回類型,包括基礎數據類型和復雜數據類型
(2)resultMap
resultMap則是對外部resultMap定義的引用,對應外部resultMap的id,表示返回結果映射到哪一個resultMap上。它的應用場景一般是:數據庫字段信息與對象屬性不一致或者需要做復雜的聯合查詢以便自由控制映射結果
(3)resultType和resultMap的關聯
在MyBatis進行查詢映射的時候,其實查詢出來的每個字段值都放在一個對應的Map裏面,其中鍵是字段名,值則是其對應的值。當select元素提供的返回類型屬性是resultType的時候,MyBatis會將Map裏面的鍵值對取出賦值給resultType所指定的對象對應的屬性(即調用對應的對象裏的屬性的setter方法進行填充)。
resultType屬性和resultMap屬性絕對不能同時存在
3.使用@Param註解實現多參數入參
4.使用resultMap實現高級結果映射
(4.1)association
association僅處理一對一的關聯關系
(4.2)collection
5.resultMap自動映射級別和MyBatis緩存
(1)MyBatis對resultMap自動映射的三個匹配級別:
- NONE:禁止自動匹配
- PARTIAL(默認):自動匹配所有屬性,有內部嵌套(association、collection)除外
- FULL:自動匹配所有
MyBatis的SQL映射文件