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 提供的型別處理器滿足日常需要,不需要自定義: