MyBatis 配置文件詳解


根元素<configuration>,子元素:

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

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

可缺省部分子元素。

 

 


 

 

<properties>

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

 

比如數據庫的連接信息,我們可以直接寫在全局配置文件中:

<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:

    <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:

<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包下所有的映射文件。


免責聲明!

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



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