SQL映射文件
1.SQL映射文件(...Mapper.xml)
SQL映射文件的幾個頂級元素(按照定義順序)
mapper-只有一個屬性 namespace(命名空間)用於區分不同的mapper,全局唯一
綁定dao接口,及面向接口編程
cache-配置給定命名空間的緩存
cache-ref-從其他命名空間應用緩存配置
resultMap-用來描述數據庫結果集和對象的對應關系
sql-可用重用的SQL塊,也可以被其他語句引用
insert-映射插入語句
update-映射更新語句
delete-映射刪除語句
select-映射查詢語句
2.SQL映射文件的select的返回結果類型的映射可以使用resultMap和resultType,但不能同時使用。
resultType 直接表示返回類型包括 基礎數據類型 和 復雜數據類型。
resultMap 則是對外部resultMap定義的引用,對外部resultMap的Id,表示返回結果映射到哪一個resultMap上
它的應用場景一般是 數據庫字段信息與對象屬性不一致 或者需要做復雜的聯合查詢以便自由控制映射結果。
3.關於MyBatis的SQL語句參數入參,對於基礎數據類型的參數數據,使用@param註解實現參數入參;復雜數據類型的參數直接入參即可。
4.resultMap的association 和 collection 可以實現高級結果映射。
association屬性有:
- javaType:完整Java類名或者別名。若映射到一個JavaBean,則MyBatis通常會自行檢測到其類型;
若映射到一個HashMap,則應該明確指定JavaType,來確保所需行為。
- property:映射數據庫列的實體對象的屬性。
association的子元素有:
- id
- result
property:映射數據庫列的實體對象的屬性。
column:數據庫列名或別名
collection的屬性有:
- ofType:完整Java類名或者別名,及集合所包含的類型。
- property:映射數據庫列的實體對象的屬性。
5.MyBatis緩存
- 一級緩存:是基於PerpetualCache(MyBatis自帶)的HashMap本地緩存,作用範圍為session域內,但session flush 或者 close 之後,該session中所有的cache就會被清空。
- 二級緩存:就是global caching,它超出session 範圍之外,可以被所有SqlSession 共享,開啟它只需要在MyBatis的核心配置文件(mybatis-config.xml)settings中設置即可
- 一級緩存緩存的是SQL語句,二級緩存緩存的是結果對象。
SQL映射文件