MyBatis 配置文件詳解

根元素<configuration>,子元素:java

  • <properties>
  • <setttings>
  • <typeAliases>
  • <typeHandlers>
  • <objectFactory>
  • <plugins>
  • <environments>
  • <databaseIdProvider>
  • <mappers>

這些子元素的配置是有順序的,只能按照上面的順序配置。mysql

可缺省部分子元素。spring

 

 


 

 

<properties>

用於將內部的配置外在化,在<properties>中引入外部配置便可。sql

 

好比數據庫的鏈接信息,咱們能夠直接寫在全局配置文件中:數據庫

<environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/my_db?serverTimezone=GMT"/>
                <property name="username" value="chy"/>
                <property name="password" value="abcd"/>
            </dataSource>
        </environment>
</environments>

考慮到更換數據庫時,運維從一大堆代碼很差找數據庫的鏈接信息,咱們能夠把數據庫的鏈接信息拿出來,單獨寫在一個配置文件中。緩存

 

sql.properties:服務器

mysql_driver=com.mysql.cj.jdbc.Driver mysql_url=jdbc:mysql://localhost:3306/my_db?serverTimezone=GMT
mysql_username=chy mysql_password=abcd #oracle_driver=..... #oracle_url=..... #oracle_username=..... #oracle_password=.....

 

mybatis-config.xml:mybatis

 <properties resource="sql.properties"></properties>

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

 

 


 

 

<settings>

用於設置mybatis運行時的參數。經常使用的項有:併發

  • cacheEnabled:是否使用緩存,boolean值,默認爲false
  • lazyLoadingEnabled :是否使用懶加載,boolean值,默認爲false
  • defaultStatementTimeout:設置超時時間,默認單位秒
  • mapUnderscoreToCamelCase:是否啓用camel命名規則的映射,boolean值,默認爲false
  • logImpl:使用的日誌框架

 

通常只需配置logImpl:oracle

<settings>
        <setting name="logImpl" value="LOG4J"/>
</settings>

若是不使用日誌框架,能夠缺省此配置。

 

 


 

 

<typeAlias>

用於配置pojo類別名。

 

在映射文件中,若是parameterType、 resultType是本身寫的pojo類,必須使用全限定類名:

resultType="com.chy.pojo.Student"

又臭又長,很麻煩。可使用別名。

 

 

配置pojo類的別名:

<typeAliases>
        <typeAlias type="com.chy.pojo.Student" alias="Student"/>
        <typeAlias type="com.chy.pojo.Teacher" alias="Teacher"/>
 </typeAliases>
resultType="Student"

直接寫別名便可。

若是缺省alias屬性,默認爲類名的camel寫法,好比Student => student。

 

 

也可使用註解來配置pojo類的別名:

@Alias(value = "Student") public class Student { //......
}

能夠缺省屬性名,簡寫爲

@Alias("Student")

 

 

若是以爲一個一個地配置pojo類很麻煩,可使用包自動掃描:

<typeAliases>
        <package name="com.chy.pojo"/>
</typeAliases>

這個包下全部的pojo類都使用camel命名方式的別名。

 

在映射文件中使用別名有一個缺點:Ctrl+左鍵不會轉到定義處。

 

 


 

 

<typeHandlers>

將參數傳給預處理語句時,須要將數據從javaType(java類型)轉換爲jdbcType(jdbc類型);

將結果集中的數據轉換爲指定類型時,須要將數據從jdbcType轉換爲javaType。

這2個過程都要用到typeHandler(類型轉換器)。通常咱們使用mybatis自帶的類型轉換器便可,也能夠在<typeHandlers>中引用自定義的類型轉換器。

 

 


 

 

<objectFactory>

ObjectFactory負責建立結果實例。

將查詢結果映射爲指定對象時,默認的ObjectFactory先調用無參的構造器建立pojo類的實例,再調用setter方法注入值。

通常咱們使用默認的ObjectFactory便可,也能夠在<objectFactory>中引用自定義的ObjectFactory類。

 

 


 

 

<plugins>

mybatis容許在將查詢結果映射爲指定類型的過程當中,以插件形式執行自定義的代碼。

 

 


 

 

<environments>

環境配置,mybatis是持久層框架,它的環境天然是數據庫,即數據庫的配置。

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

通常要配置多個環境,開發一個環境,正式使用一個環境。default指定要使用哪一個<environment>。

 

 

一個<environment>即一個環境(數據庫配置)。

<transactionManager>指定使用哪一種事務管理,一般使用JDBC的事務管理。若是搭配Spring使用,通常使用Spring的事務管理(在spring中配置事務管理),不在mybatis中配置事務。

<dataSource>配置數據源,mybatis提供了三種數據源:

  • UNPOOLED    不使用鏈接池
  • POOLED   使用鏈接池
  • JNDI   適合在在EJB或應用服務器等容器中使用

type指定使用哪一種數據源,<property>子元素設置具體選項。

 

 

UNPOOLED

不使用鏈接池,適合對性能沒有要求的、簡單的應用程序。

經常使用屬性:

  • driver、url、username、password
  • defaultTransactionlsolationLevel   設置默認的事務隔離級別

 

 

POOLED

操做數據庫速度更快,適合高併發的程序,很經常使用。

經常使用屬性:

  • driver、url、username、password
  • defaultTransactionlsolationLevel   設置默認的事務隔離級別
  • poolMaximumActiveConnections   最大活躍鏈接數
  • poolMaximumIdleConnections   最大閒置鏈接數

 

 


 

 

<mapper>

用於引入映射文件。寫法不少,經常使用的有3種:

  •  經過映射文件的路徑引入
<mappers>
        <mapper resource="com/chy/mapper/StudentMapper.xml"/>
        <mapper resource="com/chy/mapper/TeacherMapper.xml"/>
</mappers>

 

 

  • 經過mapper接口類引入
<mappers>
        <mapper class="com.chy.mapper.StudentMapper"/>
</mappers>

 

 

  • 經過包名引入
<mappers>
        <package name="com.chy.mapper"/>
</mappers>

這種最經常使用,能夠一次性引入mapper包下全部的映射文件。

相關文章
相關標籤/搜索