1. 程式人生 > >mybatis學習筆記之——mybatis的XML配置檔案(全域性配置檔案)

mybatis學習筆記之——mybatis的XML配置檔案(全域性配置檔案)

MyBatis的配置檔案包含了會深深影響MyBatis行為的設定(settings)和屬性(properties)資訊。我們詳細瞭解一下MyBatis的各種標籤的作用以及使用方法。

properties

properties:配置,mybatis可以使用properties標籤來引入外部properties配置檔案的內容。

<properties resource="引入類路徑下的資源" url="引入網路路徑或者磁碟路徑下的資源">
</properties>

settings

settings:設定,包含了很多重要的設定項。

setting:用來設定每一個設定項。

<settings>
    <setting name="設定項名" value="設定項取值true/false"/>
</settings>

 設定項有很多,可以參考官方文件,每個設定項都有一個預設取值。

typeAliases

typeAliases:類型別名。可以為我們的Java型別取別名,別名不區分大小寫。

typeAlias:為某個型別取別名。

package:批量取別名。

<typeAliases>
    <typeAlias type="指定要取別名的型別全名。預設名是類名的小寫。" alias="指定新的別名"></typeAlias>

    <package name="指定包名(為當前包以及下面所有的後代包都取一個預設別名)"></package>
</typeAliases>

我們在批量取別名的情況下,如果存在包下和後代包下相同的類名相同的情況,也可以使用@Alias("別名")註解為某個型別指定新的別名。

這裡還需要注意的是,基本型別的別名是前面加下劃線_,包裝型別的別名是小寫。這是mybatis已經配置好的別名。我們在取別名的時候不要將別名設定成這些。

typeHandlers

typeHandlers:型別處理,無論是 MyBatis 在預處理語句(PreparedStatement)中設定一個引數時,還是從結果集中取出一個值時, 都會用型別處理器將獲取的值以合適的方式轉換成 Java 型別。

objectFactory

objectFactory:物件工廠。MyBatis 每次建立結果物件的新例項時,它都會使用一個物件工廠(ObjectFactory)例項來完成。預設的物件工廠需要做的僅僅是例項化目標類,要麼通過預設構造方法,要麼在引數對映存在的時候通過引數構造方法來例項化。如果想覆蓋物件工廠的預設行為,則可以通過建立自己的物件工廠來實現。

plugins

plugins:外掛。

environments

environments:配置環境,mybatis可以配置多種環境,default指定使用某種環境,可以達到快速切換。

environment:配置一個具體的環境資訊,(必須有transactionManager和dataSource兩個標籤)。

<environments default="development">
    <environment id="設定環境名字">
        <!-- transactionManager:事務管理器 -->
        <transactionManager type="事務管理器的型別:JDBC/MANAGED"></transactionManager>
        <!-- dataSource:資料來源 -->
        <dataSource type="UNPOOLED/POOLED/JNDI"></dataSource>
    </environment>
    
    <!-- 這裡為連線SQL server資料庫的例子,username為使用者名稱,password為密碼 -->
    <environment id="development">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
            <property name="url" value="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=mybatis"/>
            <property name="username" value="sa"/>
            <property name="password" value="sa123456"/>
        </dataSource>
    </environment>
</environments>

這裡的事務管理器型別:

JDBC:這個配置就是直接使用了 JDBC 的提交和回滾設定,它依賴於從資料來源得到的連線來管理事務作用域。

MANAGED:這個配置幾乎沒做什麼。它從來不提交或回滾一個連線,而是讓容器來管理事務的整個生命週期(比如 JEE 應用伺服器的上下文)預設情況下它會關閉連線,然而一些容器並不希望這樣,因此需要將 closeConnection 屬性設定為 false 來阻止它預設的關閉行為。

我們也可以自定義事務管理器,需要實現TransactionFactory介面,type可以寫這個實現類的全類名。

這裡的資料來源:

UNPOOLED:UnpooledDataSourceFactory不使用連線池;

POOLED:PooledDataSourceFactory使用連線池,預設使用;

JNDI:JndiDataSourceFactory 使用JNDI;

自定義資料來源:實現DataSourceFactory,type是全類名。

databaseIdProvider

databaseIdProvider:資料庫廠商標識。用於配置多資料庫的支援。

type:DB_VENDOR,DB_VENDOR是別名,VendorDatabaseIdProvider、作用就是得到資料庫廠商標識(驅動getDatabaseProductName()), mybatis就能根據資料庫廠商標識來執行不同的sql。 一些預設的資料庫廠商標識:MySql,Oracle,SQL Server。

select標籤裡面有一個databaseId屬性,將databaseId屬性的值設定為資料庫廠商名,即可設定連線的資料庫。

<databaseIdProvider type="DB_VENDOR">
    <!-- 為不同資料庫廠商取別名 -->
    <property name="MySql" value="mysql"></property>
    <property name="Oracle" value="oracle"></property>
    <property name="SQL Server" value="sqlserver"></property>
</databaseIdProvider>

mappers

mappers:對映器。將sql對映註冊到全域性配置中。

mapper:註冊一個sql對映。

<mappers>
    <mapper url="引入網路環境或者磁碟路徑下的sql對映檔案"></mapper>
    <mapper resource="引入類路徑下的sql對映檔案"/>
</mappers>

以上為MyBatis的對映配置檔案的內容,在我們實際編寫配置檔案的時候,這些標籤是有順序的。

詳情見mybatis的官網 http://www.mybatis.org/mybatis-3/zh/index.html 。