MyBatis--主配置文件詳解
主配置文件可以隨便命名,其主要完成以下幾個(gè)功能:
- 注冊(cè)存放DB連接四要素的屬性文件
- 注冊(cè)實(shí)體類的權(quán)限定性類名的別名
- 配置MyBatis運(yùn)行環(huán)境,即數(shù)據(jù)源與事務(wù)管理器
- 注冊(cè)映射文件
MyBatis.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 注冊(cè)屬性文件 -->
<properties resource="jdbc.properties"/>
<!-- 配置MyBatis運(yùn)行環(huán)境 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.dirver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 注冊(cè)映射文件 -->
<mappers>
<mapper resource="com/hcx/dao/mapper.xml"/>
<!-- <mapper resource="com/hcx/dao/mapper2.xml"/> -->
</mappers>
</configuration>
一、注冊(cè)DB連接四要素屬性文件
<!-- 注冊(cè)DB連接四要素的屬性文件 -->
<properties resource="jdbc.properties"/>
二、指定實(shí)體類權(quán)限定性類名的別名
1.<package/>方式
一般使用<package/>方式,這樣做的好處是會(huì)將該包中年所有實(shí)體類的簡(jiǎn)單類名指定為別名。
<!--配置別名-->
<typeAliases>
<package name="com.hcx.beans"/>
</typeAliases>
2.通過<typealias/>指定。
- type:權(quán)限定性類名
- alias:別名
該方式的好處是,可以指定別名為簡(jiǎn)單類名以外的其他名稱。當(dāng)然,弊端是,必須逐個(gè)指定,比較繁瑣。
<!-- 注冊(cè)類的別名 -->
<typeAliases>
<typeAlias type="com.hcx.beans.Student" alias="Student"/>
</typeAliases>
3.使用MyBatis內(nèi)置的類型別名
基本類型:
常用包裝類型:
三、配置MyBatis的運(yùn)行環(huán)境
主要是配置數(shù)據(jù)源和事務(wù)管理器
1.<environments/>標(biāo)簽
在<environments/>中可以包含多個(gè)運(yùn)行環(huán)境<environment/>,但其default屬性指定了當(dāng)前MyBatis運(yùn)行時(shí)所選擇使用的環(huán)境。
2.<transactionManager/>標(biāo)簽
<!-- 使用jdbc事務(wù)管理 -->
<transactionManager type="JDBC" />
該標(biāo)簽用于指定MyBatis所使用的事務(wù)管理器。MyBatis支持兩種事務(wù)管理器;JDBC與MANAGED
- JDBC:使用jdbc事務(wù)管理機(jī)制。即,通過connection的commit()方法提交,通過rollback方法回滾。但默認(rèn)情況下,MyBatis將自動(dòng)提交功能關(guān)閉了,改為了手動(dòng)提交。即程序中需要顯式的對(duì)事務(wù)進(jìn)行提交或回滾。
- MANAGED:由容器來管理事務(wù)的整個(gè)生命周期(如Spring容器)
3.<dataSource/>標(biāo)簽
該標(biāo)簽用于配置MyBatis使用的數(shù)據(jù)源類型與數(shù)據(jù)庫(kù)連接基本屬性。常見類型有:UNPOOLED、POOLED、JDNI等
- UNPOOLED:不使用連接池。即每次請(qǐng)求,都會(huì)為其創(chuàng)建一個(gè)DB連接,使用完畢后,會(huì)馬上將此連接關(guān)閉。
- POOLED:使用數(shù)據(jù)庫(kù)連接池來維護(hù)連接
- JDNI:數(shù)據(jù)源可以定義到應(yīng)用的外部,通過JDNI容器獲取數(shù)據(jù)庫(kù)連接。
代碼:
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
若要從屬性文件中讀取DB連接四要素信息,則使用如下方式:
<!-- 數(shù)據(jù)庫(kù)連接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.dirver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
四、指定映射文件
指定映射文件的方式有多種,但所有的方式,都是指定在<mappers/>標(biāo)簽中的。
1.<mapper resource="">方式
<!-- 注冊(cè)映射文件 -->
<mappers>
<mapper resource="com/hcx/dao/mapper.xml"/>
<mapper resource="com/hcx/dao/mapper2.xml"/>
</mappers>
2.<mapper url="">方式
<mappers>
<mapper url="file:///E:\workspace\mybatisPrimary\src\com\hcx\dao\IStudentDao.xml"/>
</mappers>
該方式的好處是,可以將映射文件放在本地或網(wǎng)絡(luò)的任意位置,通過url地址即可直接訪問。當(dāng)通常映射文件是存放在當(dāng)前應(yīng)用中的,所以該方式不常用。
3.<mapper class="">方式
class屬性值為dao接口的全類名
<mappers>
<mapper class="com.hcx.dao.IStudentDao"/>
</mappers>
該方式的使用,需要滿足以下幾個(gè)要求:
- 映射文件名要與dao接口名相同
- 映射文件要與接口在同一包中
- 映射文件中<mapper/>的namespace屬性值為dao接口的全類名
4.<package name="">方式
當(dāng)映射文件較多時(shí),也可以使用如下形式。其中package的naem屬性指定映射文件所存放的包。
<mappers>
<package name="com.hcx.dao"/>
</mappers>
但,這種方式的使用需要滿足以下條件:
- dao使用mapper動(dòng)態(tài)代理實(shí)現(xiàn)
- 映射文件名要與dao幾口名相同
- 映射文件要與接口在同一包中
- 映射文件中<mapper/>的namespace屬性值為dao接口的全類名