標籤:進階 複雜資料類型 檔案的 註解 範圍 ram res 開啟 情境
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,來確保所需行為。
association的子項目有:
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對應檔