MyBatis全局配置文件介绍
一、properties
properties標簽可以用于引入外部的配置文件,也可以用于定義全局變量。
比如我們在配置數據源的時候習慣把相關的信息單獨的放在一個配置文件中,方便修改。
數據庫配置信息dbconfig.properties
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis-study jdbc.username=root jdbc.password=1234在全局配置文件mybatis-config.xml中通過使用properties標簽引用dbconfig.properties
<configuration><!-- properties 中提供了兩個屬性,分別是resource 和url resource用于引入類路徑下的資源url 用于引入磁盤或者網絡路徑中的資源--><properties resource="dbconfig.properties"></properties><environments default="development"><environment id="development"><transactionManager type="JDBC"/><!-- 配置數據源 通過${} 的方式獲得外部變量的值 --><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments> </configuration>二、settings
settings標簽用于改變 MyBatis 的運行時行為。
部分配置實例如下:
三、typeAliases
typeAliases可以為javabean 起別名。
比如我們在SQL 映射文件中寫SQL 語句時,返回的結果類型可能是某個javabean 類型,這時候為了方便,我們就可以為這個javabean 設置一個簡單的別名。注意配置的順序,typeAliases要配置在settings后面。
SQL 映射文件
<!-- 設置了別名以后,resultType 返回值類型就可以使用別名了 --><select id="getEmpById" resultType="Employee">select * from t_employee where id = #{id}</select>四、typeHandlers
typeHandlers類型處理器,不管MyBatis 在預處理語句(PreparedStatement)中設置一個參數,還是從結果集中取出一個值時, 都會用類型處理器將獲取的值以合適的方式轉換成 Java 類型。
比如數據庫中的VARCHAR類型,會被轉換成Java 中的java.lang.String,其類型處理器是StringTypeHandler。這個標簽通常不必設置,MyBatis 對大部分常用的數據類型都進行了轉換。
五、objectFactory
MyBatis 每次創建結果對象的新實例時,都會使用一個對象工廠(ObjectFactory)實例來完成。 默認的對象工廠需要做的僅僅是實例化目標類,要么通過默認構造方法,要么在參數映射存在的時候通過參數構造方法來實例化。這個標簽一般不需要作其他配置。
六、plugins
MyBatis 允許你對已經映射的SQL 語句在執行過程中可以對某一點進行攔截調用。默認情況下,MyBatis 允許使用插件來攔截的方法調用主要有四個:
Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed) ParameterHandler (getParameterObject, setParameters) ResultSetHandler (handleResultSets, handleOutputParameters) StatementHandler (prepare, parameterize, batch, update, query)這些方法的使用會在后續的報文中會作具體的介紹,有興趣的話可以關注后續的博文。
七、environments
environments允許配置成多種運行環境,比如開發、測試和生產環境,可以在不同的生產環境中分別配置對應的數據庫。這種機制有助于將 SQL 映射應用于多種數據庫之中。
比如可以在environments中設置兩個環境,分別是test 和development。在不同的環境下,可以通過default來指定。
<environments default="development"><!-- 生產環境 --><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment><!-- 測試環境 --><environment id="test"><transactionManager type="JDBC"/><dataSource type="POOLED"><!-- ...省略一些信息... --></dataSource></environment></environments>environments下可以設置多個environment,每個environment都必須要有transactionManager和dataSource,否則會報錯。
八、databaseIdProvider
設置databaseIdProvider可以讓MyBatis 支持不同廠商的數據庫,對于多數據庫廠商的支持基于SQL 映射文件中的databaseId字段。
比如設置MyBatis 支持三種數據庫廠商,需要做如下配置:
在SQL 映射文件中編寫SQL 的時候可以通過databaseId字段設置使用的是哪個廠商的數據庫。當然如果你要在不同數據庫廠商之間進行切換,都需要配置相對應的數據源。
<mapper namespace="com.jas.mybatis.mapper.EmployeeMapper"><!-- databaseId="mysql" 表示使用的是MySql ,"mysql" 是上面設置的MySql 的別名 --><select id="getEmpById" resultType="Employee" databaseId="mysql">select * from t_employee where id = #{id}</select> </mapper>九、mappers
mappers用于在全局配置文件中注冊SQL 映射文件。mapper標簽中提供了三個屬性resource、url和class。
resource加載類路徑下的SQL映射文件,
url 加載磁盤中或者網絡中的映射文件,
class用于注冊接口。
配置規則如下:
十、總結
這些標簽的使用順序是一定的,打亂定義的順序會報錯。
properties -> settings -> typeAliases -> typeHandlers -> objectFactory -> objectWrapperFactory -> reflectorFactory -> plugins -> environments -> databaseIdProvider -> mappers這篇博文主要介紹了MyBatis 全局配置文件中一些標簽,關于這些標簽,只是將其中一些相對重要的用法作了介紹,并沒有把標簽的全部用法列出來。如果你想更全面了解這些標簽的用法,官方文檔是一個不可錯過的選擇。
官方文檔鏈接:http://www.mybatis.org/mybatis-3/zh/configuration.html
總結
以上是生活随笔為你收集整理的MyBatis全局配置文件介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天然气开户需要带什么
- 下一篇: MyBatis处理多参数及原理分析