MyBatis SQL映射文件

   SQL映射文件的幾個頂級元素:

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

          做用:用於區分不一樣的mapper ,全局惟一

          綁定DAO接口,即面向接口編程 ,namespace的命名必需要跟接口同名。

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

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

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

          sql : 能夠重用的SQL塊,也能夠被其餘語句引用。

          insert: 映射插入語句。

          update : 映射更新語句

          delete:  映射刪除語句

          select: 映射查詢語句

          namespace的命名必須跟某個DAO接口同名,同屬於DAO層 包下,習慣命名以 實體類+Mapper.xml命名。    

         接口中的方法名與映射文件中的SQL語句id應一一對應

 使用select完成 單條件模糊查詢

      <select  id="getUserListByUserName"  resultType="User"  parameterType="string">sql

              select  *   from   smbms_user   where  userName  like  CONCAT ('%',#{userName},'%')數據庫

      <select>編程

    id爲 getUserListByUserName 的映射語句,參數類型爲 string 返回結果類型是User;            數據庫的字段名和屬性名不一致的狀況下須要手動映射緩存

    id: 命名空間中惟一的標識符,能夠被用來引用這條語句。session

   parameterType: 表示查詢語句傳入參數的類型的徹底限定名或別名。app

MyBatis多參數入參有三種方式:

       1.將查詢條件封裝成對象進行入參    parameterType="User 類對象"spa

       2. 使用Map集合 存儲查詢條件         parameterType="Map" 返回集合xml

       3. 使用@Param註解實現多參數入參 :  public   int   updatePwd(@Param("id")Integer id,@param("userPassword") String pwd);對象

使用resultMap完成查詢結果的展示

     resultType 直接表示返回類型,包括基礎數據類型和複雜數據類型。

      resultMap 是對外部resultMap定義的引用,對應外部resultMap的id,表示返回結果映射到哪個resultMap上,應用場景通常是:數據庫字段信息與對象屬性不一致或者須要作複雜的聯合查詢以便自由控制映射結果。

       resultType 屬性和 resultMap 屬性絕對不能同時存在,只能兩者選其以使用。

 

使用insert完成增長操做

     insert ,update ,delete 增,改,刪,默認返回執行sql影響的行數,因此DAO層的接口方法的返回值一直設置爲int類型,

     insert,update,delete 元素中均沒有resultType屬性,只有查詢操做須要對返回結果類型,進行相應的指定

 MyBatis中參數入參,什麼時候須要封裝成對象入參,什麼時候又須要使用多參數入參?

通常狀況下,超過4個以上的參數最好封裝成對象入參(特別是在常規的增長和修改操時字段較多,封裝成對象比較方便)

使用resultMap實現高級結果映射

    1.association : 映射到JavaBean的某個 複雜類型 屬性    僅處理一對一的關聯關係

       association的屬性:javaType:完整java類名或者別名

                                       property:映射數據庫列的實體對象的屬性

   2. collection 這個屬性是應該集合列表

 

resultMap自動映射級別和MyBatis緩存

      <settings>

               <setting name="autoMapperinigBehavior" value="FULL"/>   //設置resultMap的自動映射級別爲FULL(自動匹配全部)

      </settings>

       NONE : 禁止自動匹配

       PARTIAL (默認): 自動匹配全部屬性

       FULL: 自動匹配全部

 MyBatis緩存

       1.一級緩存

          一級緩存是基於PerpetualCache( MyBatis自帶) 的HashMap本地緩存,做用範圍爲session域內當session flush 或者 close以後,該session中全部的cache就會被清空。

       2. 二級緩存

           二級緩存就是global caching 它超出session範圍以外,能夠被全部sqlSession共享,開啓它只須要在MyBatis的核心配置文件 settings 中設置便可

相關文章
相關標籤/搜索