Mybatis學習筆記(六)——配置檔案
本部落格原始碼下載:戳我一下
Mybatis學習筆記彙總:戳我一下
一、配置檔案內容
SqlMapConfig.xml中配置的內容和順序如下:
properties
(屬性)settings
(全域性配置引數)typeAliases
(類型別名)typeHandlers
(型別處理器)objectFactory
(物件工廠)plugins
(外掛)environments
(環境集合屬性物件)environment
(環境子屬性物件)transactionManager
(事務管理)dataSource
(資料來源)
mappers
(對映器)
二、properties
(屬性)
SqlMapConfig.xml
可以引用java屬性檔案中的配置資訊如下:
在classpath
下定義db.properties
檔案
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=mysql
SqlMapConfig.xml
引用如下:
<properties resource="db.properties"/>
<!--在properties這個標籤中還可以配置一些屬性名和屬性值 -->
<!-- <property name="" value=""/> -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<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>
注意: MyBatis 將按照下面的順序來載入屬性:
1、在 properties
元素體內定義的屬性首先被讀取。
2、然後會讀取properties
元素中resource
或 url
載入的屬性,它會覆蓋已讀取的同名屬性。
3、最後讀取parameterType
傳遞的屬性,它會覆蓋已讀取的同名屬性。
因此,通過parameterType傳遞的屬性具有最高優先順序,resource或 url 載入的屬性次之,最低優先順序的是 properties 元素體內定義的屬性。
三、settings
(全域性引數配置)
這是 MyBatis 中極為重要的調整設定,它們會改變 MyBatis 的執行時行為。下表描述了設定中各項的意圖、預設值等。
四、typeAliases
(類型別名)
別名 | 型別 |
---|---|
_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 |
object | Object |
map | Map |
hashmap | HashMap |
list | List |
arraylist | ArrayList |
collection | Collection |
iterator | Iterator |
類型別名的使用
<typeAliases>
<!-- 針對單個別名的定義
type:型別的路徑
alias:別名
-->
<!-- <typeAlias type="com.jiayifan.po.User" alias="User"/> -->
<!-- 批量別名定義
指定包名,mybatis會自動的掃描pojo類,自動定義別名,別名就是
類名,首字母大寫或小寫都可以
-->
<package name="com.jiayifan.po"/>
</typeAliases>
五、typeHandlers
(型別處理器)
型別處理器用於java型別和jdbc型別對映,如下:
<select id="findUserById" parameterType="int" resultType="user">
select * from user where id = #{id}
</select>
mybatis自帶的型別處理器基本上滿足日常需求,不需要單獨定義。
六、mappers
(對映器)
Mapper配置的幾種方法:
1、<mapper resource=" " />
使用相對於類路徑的資源
如:<mapper resource="sqlmap/User.xml" />
2、<mapper url=" " />
使用完全限定路徑
如:<mapper url="file:///D:\workspace_spingmvc\mybatis_01\config\sqlmap\User.xml" />
3、<mapper class=" " />
使用mapper介面類路徑
如:<mapper class="cn.itcast.mybatis.mapper.UserMapper"/>
注意:此種方法要求mapper介面名稱和mapper對映檔名稱相同,且放在同一個目錄中。
4、<package name=""/>
註冊指定包下的所有mapper介面
如:<package name="cn.itcast.mybatis.mapper"/>
注意:此種方法要求mapper介面名稱和mapper對映檔名稱相同,且放在同一個目錄中。
程式碼例項
<mappers>
<!-- 通過resource方法一次載入一個對映檔案 -->
<mapper resource="sqlmap/User.xml"/>
<!-- <mapper resource="mapper/UserMapper.xml"/> -->
<!-- 通過mapper介面載入單個對映檔案
遵循一些規範:需要將mapper介面的類名和mapper.xml對映檔名保持一致
且在一個目錄中,這個的前提是使用mapper代理的方法
-->
<!-- <mapper class="com.jiayifan.mapper.UserMapper"/> -->
<!-- 批量載入
指定mapper介面的包名,mybatis自動的掃描包下的所有mapper介面
並載入,但是必須遵循 “通過mapper介面載入單個對映檔案”的規範
-->
<package name="com.jiayifan.mapper"/>
</mappers>
參考了下面的一些文章: