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