MyBatis—mapper.xml映射配置


SQL文件映射(mapper文件),幾個頂級元素的配置:

 

mapper元素:根節點只有一個屬性namespace(命名空間)作用:

1:用於區分不同的mapper,全局唯一。

2:綁定DAO接口,即面向接口編程。當namespace綁定某一接口之后,可以不用寫該接口的實現類,MyBatis會通過接口的完全限定名來查找對應的mapper配置,執行SQL語句,因此namespa

ce的命名必須和接口名相同。

-----------------------------------------------------

namespace屬性的要求:

1:namespace的命名必須和某個DAO接口同名,同屬於DAO層,

故代碼結構上,mapper映射文件個接口必須放在同一個包下。

2:在不同的mapper文件中,元素的id是可以相同的,MyBatis

是通過namespace和子元素的id聯合區分的。接口中的方法和映射文件的SQL中的id一一對應。

-----------------------------------------------------

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

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

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

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

insert:映射插入語句

updata:映射更新語句

delete:映射刪除語句

select:映射查詢語句

 

resultMap的應用

resultType:直接表示返回類型

基礎數據類型

復雜數據類型

resultMap:對外部resultMap的引用

應用場景

1:數據庫的字段信息與屬性不一致的情況

2:復雜的聯表查詢,可以自由地控制要展現的映射字段個數

==================================

其實返回的都是Map集合,當resultType返回user時候,MyBatis通過setter()方法自動進行關系映射賦值。返回resultMap時,則需要手動賦值,更自由。二者不能同時存在

==================================

設置resultMap的自動映射級別:

resultMap的自動映射匹配的前提:字段名和屬性名一致

resultMap的自動映射級別:

屬性: aotuMappingBehavior

值: PARTIAL(默認):自動匹配所有屬性

NONE:關閉自動映射

 

resultMap的自動映射三個匹配級別:

1:NONE:禁止自動匹配

2:PARTIAL:(默認)自動匹配所有屬性

有內部嵌套(collection,association)的除外

3:FULL:自動匹配所有

==================================

resultMap的基本配置項

 

resultMap的屬性:

id:它是resultMap的唯一標識

type:java實體類

resultMap的子元素

id:對應數據庫中該行的主鍵id,設置此項可提高MyBatis的性能

result:映射到javaBean的某個簡單類型屬性

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

column:數據庫列名或者別名

association:映射到javaBean的某個復雜類型屬性如javaBean

1: 復雜的類型關聯,一對一(一個實體類嵌套另一個實

體類屬性)

2:內部嵌套:映射一個嵌套javaBean屬性

3:屬性:

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

b:javaType:完整java類名或者別名

c:resultMap:應用外部的resultMap

4:子元素

id:同resultMap的id一樣對應該javaBean表的主鍵

result:

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

column:數據庫列名或者別名

collection:映射到javaBean的某個復雜類型屬性,例如集合

1:復雜類型集合,一對多(一個實體類嵌套另一個實體類集合)

2:內部嵌套:映射一個嵌套結果集到一個列表

3:屬性

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

ofType : 完整的java類名或者別名(集合所包含的類型)

resultMap : 應用外部的resultMap,代碼重用

4:子元素

id:同resultMap的id一樣對應該javaBean表的主鍵

result:

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

column:數據庫列名或者別名

 

 

使用select完成單條件查詢

 

select標簽:及其屬性:

1:id:命名空間的唯一標識符,與接口中的方法名相對應

2:parameterType:傳入的SQL語句的參數類型的限定名或別名

基礎數據類型:int String Date等, 只能傳入一個,通過#{參數名}來獲取傳入值

復雜數據類型:java實體類,Map集合通過#{屬性名}或#{Map的Key}獲取傳入值

3:resultType:SQL語句的返回值的完整類名或別名

2,3都支持內建的別名,大小寫不區分。可以參考P37別名表#{userName}:userName和接口方法中傳入的參數名是一樣的

 

a:單參數入參

 

b:多參數之javaBean對象入參

 

C:多參數之Map集合入參

 

使用insert完成增加操作

 

 

 

insert標簽及其屬性:

1:id:命名空間的唯一標識符,與接口中的方法名相對應

2:parameterType:傳入的SQL語句的參數類型的限定名或別名

 

關於增刪改的返回類型:

1:默認返回影響的行數,所以接口方法中的返回值類型要設置為int類型最好不要返回boolean。

2:insert,update,delete元素是沒有返回屬性resultType只有查詢操作select才有相應的指定。

 

使用update完成增加操作

insert標簽及其屬性:

1:id:命名空間的唯一標識符,與接口中的方法名相對應

2:parameterType:傳入的SQL語句的參數類型的限定名或別名

 

1:對象入參

同insert用法相同,沒有set賦值的屬性,在表中為NULL顯示,因此用參數入參可以解決此問題

 

2:參數入參,不寫入參類型

1:接口方法入參要使用注解

2 : 映射SQL中用#{注解名}來獲取參數值

附:超過4個參數最好封裝為對象入參,多參入參,不寫入參類型 參數固定的,最好直接多參數入參.int類型的入參都要使用包裝類.

DAO層接口的常見的返回類型

復雜數據類型:1:JAVA對象 2:Map集合 3:List集合

int類型:增刪改更新操作,返回影響的行數

MyBatis參數的入參:

1:使用注解進行參數的傳遞

2:封裝成對象入參

 

使用delete完成刪除操作

insert標簽及其屬性:

1:id:命名空間的唯一標識符,與接口中的方法名相對應

2:parameterType:傳入的SQL語句的參數類型的限定名或別名

 

MyBatis的緩存

 

1:一級緩存

2:二級緩存

-----------------------------

二級緩存的配置:

1:MyBatis的全局cache配置

2:在Mapper XML文件中設置緩存,默認情況下:未開啟

3:在Mapper XML文件配置支持cache后,需要對個別查詢做調

整可以單獨設置cache。

<select id="selectALL" resultType="Emp" useCache="true">

----------------------------------

實際上,MyBatis的緩存很少用到,當面對一定規模的數據量時,內置的cache方式也派不上用場,我們一般會選擇OS cache,mamer cache等專

門的緩存服務器來做。因此,MyBatis專心做的還是SQL映射!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM