MyBatis--主配置文件詳解

MyBatis--主配置文件詳解

主配置文件可以隨便命名,其主要完成以下幾個(gè)功能:

  1. 注冊(cè)存放DB連接四要素的屬性文件
  2. 注冊(cè)實(shí)體類的權(quán)限定性類名的別名
  3. 配置MyBatis運(yùn)行環(huán)境,即數(shù)據(jù)源與事務(wù)管理器
  4. 注冊(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)置的類型別名

基本類型:

基本類型.PNG

常用包裝類型:

常用包裝類.PNG

三、配置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)境。

environments標(biāo)簽.PNG

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è)要求:

  1. 映射文件名要與dao接口名相同
  2. 映射文件要與接口在同一包中
  3. 映射文件中<mapper/>的namespace屬性值為dao接口的全類名

4.<package name="">方式

當(dāng)映射文件較多時(shí),也可以使用如下形式。其中package的naem屬性指定映射文件所存放的包。

<mappers>  
    <package name="com.hcx.dao"/>        
</mappers>

但,這種方式的使用需要滿足以下條件:

  1. dao使用mapper動(dòng)態(tài)代理實(shí)現(xiàn)
  2. 映射文件名要與dao幾口名相同
  3. 映射文件要與接口在同一包中
  4. 映射文件中<mapper/>的namespace屬性值為dao接口的全類名
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容