1. 程式人生 > >Mybatis 的基本要素—SQL 映射文件

Mybatis 的基本要素—SQL 映射文件

isp user source 節點 技術 ref 空間 lin 引用

MyBatis 真正的強大在於映射語句,相對於它強大的功能,SQL 映射文件的配置卻是相當簡單。對比 SQL 映射配置和 JDBC 代碼,發現使用 SQL 映射文件配置可減少 50% 以上的代碼,並且MyBatis 專註於SQL,對於開發人員來說,也可極大限度地進行 SQL 調優,以保證性能。

SQL 映射文件的幾個頂級元素(按照定義的順序)

  ? mapper:映射文件的根元素節點,只有一個屬性 namespace(命名空間) 。


   namespace 作用如下
     1、用於區別不同的 mapper,namespace 和 子元素的 id 聯合保證全局唯一。
     2、綁定DAO接口。即面向接口編程,當 namespace 綁定某一接口之後,可以不用書寫該接口的實現類,MyBatis 會通過接口的完整限定名查找到對應的 mapper 配置來執行 SQL 語句。因此 namespace 的命名必須跟某個接口同名,接口中的方法與映射文件中 SQL 語句 id 一一對應。

  ? cache :配置給定命名空間的緩存

  ? cache-ref :從其他命名空間引用緩存配置

  ? resultMap:用來描述數據庫結果集和對象的對應關系

  ? sql:可以重用的 SQL 塊,也可以被其他語句引用

  ? insert:映射插入語句

  ? update:映射更新語句

  ? delete:映射刪除語句

  ? select:映射查詢語句

  註意點

    關於 MyBatis 的 SQL 映射文件中的 mapper 元素的 namespace 屬性有如下要求。
      (1) namespace 的命名必須跟某個 DAO 接口同名,同屬於 DAO 層,故代碼結構上,映射文件與該 DAO 接口應放置在同一 package 下,並且習慣上都是以 Mapper 結尾( UserMapper.java、 UserMapper.xml)。


      (2)在不同的 mapper 文件中,子元素的 id 可以相同,MyBatis 通過 namespace 和子元素的 id 聯合區分。接口中的方法與映射文件中 SQL 語句 id 應一一對應。

Mybatis 別名

  完全限定名:如:cn.mybatis.pojo.User

   別名:User / user (需要先配置 typeAliases 才能使用

  對於普通的 Java 類型,有許多內建的類型別名,並且它們對大小寫不敏感。如:基礎數據類型 “string” ,這是一個別名,代表 String ,屬於一個內建的類型別名。

  技術分享圖片

select 元素

  select:表示查詢語句,是 MyBatis 最常用的元素之一,select 語句有很多屬性可以詳細配置每一條語句。

   常用屬性如下:

     id 屬性:命名空間中唯一的標識符,與 DAO 接口中某一方法名一一對應,可以被用來引用這條語句。DAO 接口中的方法名與映射文件中的 SQL 語句 id 一一對應。
     resultType 屬性:表示 SQL 查詢語句返回值類型的完全限定名或別名。(如果核心配置文件中設置了 typeAliases則返回類型可以不寫完全限定名,且不區分大小寫

     parameterType 屬性:表示查詢語句傳入參數的類型的完全限定名或別名。它支持基礎數據類型和復雜數據類型。說明:參數傳遞使用 #{參數名}  
    基礎數據類型:int、String、Date等,只能傳入一個,通過#{參數名}即可獲取傳入的值。
    復雜數據類型:Java實體類、Map等,通過 #{屬性名} 或者 #{map 的 keyName}即可獲取傳入值

Mybatis 的基本要素—SQL 映射文件