掌握Mybatis的核心配置文件


一、配置文件結構

MyBatis的核心配置文件配置了MyBatis的一些全局信息,包含數據庫連接信息和MyBatis運行時所需的各種特性,以及設置和影響MyBatis行為的一些屬性。

該配置文件的元素節點是有先后順序的,如下

configuration    配置
    properties        可以配置在Java屬性配置文件中
    settings        修改MyBatis在運行時的行為方式
    typeAliases        為Java類型命名一個別名(簡稱)
    typeHandlers    類型處理器
    objectFactory    對象工廠
    plugins            插件
    environments    環境
        transactionManager    事務管理器
        dataSource            數據源
    mappers映射器

其中,configuration元素是整個XML配置文件的根結點

二、properties元素

properties元素描述的都是外部化、可替代的屬性。

1、可通過外部指定的方式,即配置在典型的Java屬性配置文件中,如database.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/smbms
user=root
password=123
<properties resource="database.properties"/>

<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"></transactionManager>
        <dataSource type="POOLED">
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${user}"/>
            <property name="password" value="${password}"/>
        </dataSource>
    </environment>
</environments>

2、直接配置為xml,並使用這些屬性對配置項實現動態配置

<properties>
    <property name="driver" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://127.0.0.1:3306/smbms"/>
    <property name="user" value="root"/>
    <property name="password" value="123"/>
</properties>

<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"></transactionManager>
        <dataSource type="POOLED">
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
        </dataSource>
    </environment>
</environments>

若同時用了這兩種方式,哪種方式優先呢?<property>子節點設置的值會先被讀取,resource中的同名屬性將會覆蓋property子節點的值。所以resource屬性值的優先級高於property子節點配置的值。

三、settings元素

setting元素的作用是設置一些非常重要的選項,用於設置和改變MyBatis運行中的行為,常用屬性及值如下

  • cacheEnabled      對在此配置文件下的所有cache進行全局性開/關設置            可選值為true、false        默認值為true
  • lazyLoadingEnabled    全局性設置懶加載。如果設為false,則所有相關聯的設置都會被初始化加載  可選值為true、false        默認值為true
  • autoMappingBehavior    MyBatis對於resultMap自動映射的匹配級別                 可選值為NONE、PARTIAL、FULL   默認值為PARTIAL

四、typeAliases元素

typeAliases元素的作用是配置類型別名,通過與mybatis的sql映射文件相關聯,減少輸入多余的完整類名,以簡化操作。

<?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>
    <typeAliases>
        <typeAlias type="edu.cn.pojo.User" alias="user"/>
        <typeAlias type="edu.cn.pojo.Provider" alias="provider"/>
    </typeAliases>
</configuration> 

這種寫法的弊端在於,如果一個項目中有多個pojo,需要一一進行配置。有更加簡化的寫法,就是通過package的name屬性直接指定包名,mybatis會自動掃描指定包下的javabean,並設置一個別名,默認名稱為javabean的非限定類名

<?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>
    <typeAliases>
        <package name="edu.cn.pojo"/>
    </typeAliases>
</configuration>

此時mapper中的寫法如下,edu.cn.pojo.User的非限定類名為User

<select id="getUserList" resultType="User">
  select * from smbms_user
</select>

另外,mybatis已經為許多常見的java基礎數據類型內建了相應的類型別名,一般都與其映射類型一致,並且都是大小寫不敏感的,比如映射的類型int、Boolean、String、Integer等,它們的別名就是int、Boolean、String、Integer。

五、environments元素

Mybatis可以配置多套運行環境,如開發環境、測試環境、生產環境,我們可以選擇不同的配置,從而將SQL映射到不同的數據庫環境上。不管幾套運行環境,都必須明確選擇出當前唯一的一個運行環境,這是因為每個數據庫都對應一個SqlSessionFactory實例,需要指明哪個運行環境將被創建,並把運行環境中設置的參數傳遞給SqlSessionFactoryBuilder。

<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"></transactionManager>
        <dataSource type="POOLED">
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
        </dataSource>
    </environment>
</environments>

1、通過default屬性來指定默認的運行環境,與某個id一致。id的命名要確保唯一

2、transactionManager事務管理器,設置器類型為JDBC(MyBatis有兩種事務管理類型,及JDBC和MANAGED),直接使用JDBC的提交和回滾功能,依賴於從數據源獲得連接來管理事務的生命周期

3、dataSource元素,使用標准的JDBC數據源接口來配置JDBC連接對象的資源。MyBatis提供了三種數據源類型(UNPOOLED、POOLED、JNDI),這里使用POOLED數據源類型。該類型利用“池”的概念將JDBC連接對象組織起來,減少了創建新的連接實例時所必需的初始化和認證時間,是MyBatis實現的簡單的數據庫連接池類型,它使數據庫連接可被復用,不必在每次請求時都去創建一個物理連接。

六、mappers元素

mappers映射器用來定於SQL的映射語句,我們只需要告訴MyBatis去哪里找到這些SQL語句,即去哪里找相應的SQL映射文件,可以使用類資源路徑或者URL等,如下

<mappers>
    <mapper resource="cn/smbms/dao/user/UserMapper.xml"/>
    <mapper resource="cn/smbms/dao/provider/ProviderMapper.xml"/>
</mappers> 
<mappers>
    <mapper resource="/Users/yanguobin/UserMapper.xml"/>
    <mapper resource="/Users/yanguobin/ProviderMapper.xml"/>
</mappers>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM