1. 程式人生 > >SQL映射文件

SQL映射文件

java類 spa 數據類型 mybatis 超出 引用 區分 res -c

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映射文件