1. 程式人生 > >SqlMapConfig.xml檔案詳解

SqlMapConfig.xml檔案詳解

SqlMapConfig.xml 是 mybatis 的全域性配置檔案,配置內容如下:

properties(屬性)

settings(全域性配置引數)

typeAliases(類型別名)

typeHandlers(型別處理器)

objectFactory(物件工廠)

plugins(外掛)

environments(環境集合屬性物件)

environment(環境子屬性物件)

transactionManager(事務管理)

dataSource(資料來源)

mappers(對映器)

 

1、properties 屬性

  需求:將資料庫連線引數單獨配置在 db.properties 中,只需要在 SqlMapConfig.xml 中載入該配置檔案的屬性值。

     在 SqlMapConfig.xml就不需要對資料庫連線引數硬編碼。 

  將資料庫連線引數只配置在 db.properties 中,原因:方便對引數進行統一管理,其他 xml 可以應用該配置檔案。

  

  在 SqlMapConfig.xml 載入屬性:

<!-- 載入屬性檔案 -->
<properties resource="/config/db.properties"></properties>

<!-- 和spring整合後environment配置將廢除 -->
<environments 
default="development"> <environment id="development"> <!-- 使用jdbc事務管理 --> <transactionManager type="JDBC" /> <!-- 資料庫連線池,由mybatis管理 --> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <
property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments>

 

  

  properties特性:

    注意: MyBatis 將按照下面的順序來載入屬性:

    (1)在 properties 元素體內定義的屬性首先被讀取。

    (2)然後會讀取properties 元素中resource或 url 載入的屬性,它會覆蓋已讀取的同名屬性。

    (3)最後讀取parameterType傳遞的屬性,它會覆蓋已讀取的同名屬性。

        因此,通過parameterType傳遞的屬性具有最高優先順序,resource或 url 載入的屬性次之,最低優先順序的是 properties 元素體內定義的屬性。

     

     建議:不要在 properties 元素體內新增任何屬性值,只將屬性值定義在 properties 檔案中。

        且在 properties 檔案中定義的屬性名要有一定的特殊性,如:xxxx.xxxx.xxxx 

 

 

2、setting 全域性引數配置

  mybatis 框架在執行時可以調整一些執行引數。

  比如:開啟二級快取、開啟延遲載入。

  全域性引數將會影響 mybatis 的執行行為:

  

  

  

 

3、typeAliases(別名)重點

  在 mapper.xml 中,定義了很多的 statement,statement 需要 parameterType 指定輸入引數的型別,需要 resultType 指定輸出結果的對映型別。

  如果在指定型別時輸入型別全路徑,不方便進行開發,可以針對 parameterType 或 resultType 指定的型別定義一些別名,在 mapper.xml 中通過別名定義,方便開發。

  mybatis預設支援別名:

別名

對映的型別

_byte

byte

_long

long

_short

short

_int

int

_integer

int

_double

double

_float

float

_boolean

boolean

string

String

byte

Byte

long

Long

short

Short

int

Integer

integer

Integer

double

Double

float

Float

boolean

Boolean

date

Date

decimal

BigDecimal

bigdecimal

BigDecimal 

 

 

  針對 pojo 需要我們自定義別名:

    單個別名的定義:

<typeAliases>
    <!-- 
        針對單個別名定義
        type:型別的路徑
        alias:別名
     -->
    <typeAlias type="com.bjxb.mybatis.pojo.User" alias="user"/>
</typeAliases>

 

     批量別名的定義:

<typeAliases>
    <!-- 
        批量別名的定義
        指定包名: mybatis自動掃描包中的 pojo類 ,自動定義別名,別名就是類名(首字母大寫或小寫都可以)
     -->
    <package name="com.bjxb.mybatis.pojo"/>
</typeAliases>

 

 

 4、typeHandlers(型別處理器)

  mybatis 中通過 typeHandlers 完成 jdbc 型別和 java 型別的轉換

  通常情況下,mybatis 提供的型別處理器滿足日常需要,不需要自定義: