MyBatis核心配置文件深入分析
MyBatis 的核心配置文件是 mybatis-config.xml。注意配置文件中節(jié)點(diǎn)的順序有要求,必須按照下面的順序填寫節(jié)點(diǎn)信息:
(properties,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory,reflectorFactory,plugins,environments,databaseIdProvider,mappers)
<configuration>
<properties></properties>
<settings></settings>
<typeAliases></typeAliases>
<typeHandlers></typeHandlers>
<objectFactory></objectFactory>
<objectWrapperFactory></objectWrapperFactory>
<reflectorFactory></reflectorFactory>
<plugins></plugins>
<environments></environments>
<databaseIdProvider></databaseIdProvider>
<mappers></mappers>
</configuration>環(huán)境配置與 mappers 映射器
基本的 MyBatis 配置:
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<!--每個(gè)mapper.xml都需要在mybatis配置文件中進(jìn)行配置-->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>在上面這段配置中配置了運(yùn)行環(huán)境以及 mappers 映射器。
配置 environment 時(shí),通過(guò) transactionManager 指定事務(wù)管理器,通過(guò) dataSource 指定數(shù)據(jù)庫(kù)的引擎類型、連接方式、用戶名、密碼。
mappers 映射器用來(lái)和代碼中寫的 mapper 一一對(duì)應(yīng),在代碼中寫一個(gè) mapper 接口和 mapper.xml 文件,就需要在 mappers 映射器中增加一個(gè) mapper 節(jié)點(diǎn)。
屬性(properties)
在寫 mybatis-config.xml 環(huán)境配置的時(shí)候,將數(shù)據(jù)庫(kù)的連接信息直接寫在了 mybatis-config.xml 配置文件中,不方便后續(xù)的更改,因此可以使用屬性(properties)的能力。
在 resources 目錄下新建一個(gè) db.properties:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=123
接著在 mybatis-config.xml 的 configuration 中添加 properties 節(jié)點(diǎn),注意這個(gè)節(jié)點(diǎn)的位置必須放在首位。
<properties resource="db.properties"> </properties>
接著就可以用 properties 中的屬性去代替 xml 中的屬性
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
設(shè)置(settings)
配置文件中的 settings 是 MyBatis 中極為重要的調(diào)整設(shè)置,它們會(huì)改變 MyBatis 的運(yùn)行時(shí)行為。
常用的設(shè)置有以下幾種:

設(shè)置的配置方式如下:
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="logImpl" value="NO_LOGGING"/>
</settings>類型別名(typeAliases)
類型別名可為 Java 類型設(shè)置一個(gè)縮寫名字。 它僅用于 XML 配置,意在降低冗余的全限定類名書寫。
類型別名有兩種方式,第一種是對(duì)類取別名,第二種是指定一個(gè)包名
<mapper namespace="com.cn.mapper.UserMapper">
<select id="getUserList" resultType="com.cn.pojo.User">
select * from user;
</select>
</mapper>
第一種方式是對(duì)類取別名,這里的 resultType 寫的是類的全限定名,我們可以在 mybatis-config.xml 中使用類型別名來(lái)簡(jiǎn)化。typeAliases 在配置文件中的位置需要放在 setting 后面
<typeAliases>
<typeAlias type="com.cn.pojo.User" alias="user"/>
</typeAliases>
這樣設(shè)置之后就可以在 resultType 中直接使用 user
<mapper namespace="com.cn.mapper.UserMapper">
<select id="getUserList" resultType="user">
select * from user;
</select>
</mapper>
第二種方式是指定一個(gè)包名,MyBatis 會(huì)在指定的包名路徑下搜索需要的 JavaBean。修改配置文件,使用包名來(lái)指定
<typeAliases>
<package name="com.cn.pojo"/>
</typeAliases>
每一個(gè)在包 com.lanqiaoyun.pojo 中的 Java Bean,在沒有注解的情況下,會(huì)使用 Bean 的首字母小寫的非限定類名來(lái)作為它的別名。 比如 com.lanqiaoyun.pojo.User 的別名為 user;若有注解,則別名為其注解值
@Alias("user")
public class User {
...
}
上方所示完整配置文件如下:
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties">
</properties>
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="logImpl" value="NO_LOGGING"/>
</settings>
<typeAliases>
<package name="com.cn.pojo"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!--每個(gè)mapper.xml都需要在mybatis配置文件中進(jìn)行配置-->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>到此這篇關(guān)于MyBatis核心配置文件深入分析的文章就介紹到這了,更多相關(guān)MyBatis配置文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java學(xué)習(xí)筆記_關(guān)于字符串概述
下面小編就為大家?guī)?lái)一篇java學(xué)習(xí)筆記_關(guān)于字符串概述。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
mybatis-plus?Wrapper條件構(gòu)造器updateForSet更新方式
這篇文章主要介紹了mybatis-plus?Wrapper條件構(gòu)造器updateForSet更新方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
springboot項(xiàng)目連接多種數(shù)據(jù)庫(kù)該如何操作詳析
在Spring Boot應(yīng)用中連接多個(gè)數(shù)據(jù)庫(kù)或數(shù)據(jù)源可以使用多種方式,下面這篇文章主要給大家介紹了關(guān)于springboot項(xiàng)目連接多種數(shù)據(jù)庫(kù)該如何操作的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08
Spring?Boot?3.1中整合Spring?Security和Keycloak的方法
本文介紹在最新的SpringBoot3.1版本之下,如何將Keycloak和Spring?Security一起跑起來(lái),文中結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-06-06
mybatis-parameterType傳入map條件方式
這篇文章主要介紹了mybatis-parameterType傳入map條件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
IDEA創(chuàng)建Maven項(xiàng)目后報(bào)錯(cuò)不出現(xiàn)src文件夾的情況解決
最近剛開始學(xué)習(xí)maven,正準(zhǔn)備使用idea創(chuàng)建一個(gè)maven項(xiàng)目練手,卻發(fā)現(xiàn)自己創(chuàng)建的maven項(xiàng)目始終沒有src目錄,下面這篇文章主要給大家介紹了關(guān)于IDEA創(chuàng)建Maven項(xiàng)目后報(bào)錯(cuò)不出現(xiàn)src文件夾的情況解決,需要的朋友可以參考下2023-05-05
Java在運(yùn)行時(shí)識(shí)別類型信息的方法詳解
這篇文章主要給大家介紹了關(guān)于Java在運(yùn)行時(shí)識(shí)別類型信息的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面來(lái)一起看看吧2019-01-01
Java實(shí)現(xiàn)FIFO任務(wù)調(diào)度隊(duì)列策略
在工作中,很多高并發(fā)的場(chǎng)景中,我們會(huì)用到隊(duì)列來(lái)實(shí)現(xiàn)大量的任務(wù)請(qǐng)求。當(dāng)任務(wù)需要某些特殊資源的時(shí)候,我們還需要合理的分配資源,讓隊(duì)列中的任務(wù)高效且有序完成任務(wù)。本文將為大家介紹通過(guò)java實(shí)現(xiàn)FIFO任務(wù)調(diào)度,需要的可以參考一下2021-12-12
java實(shí)用小技巧之判斷l(xiāng)ist是否有重復(fù)項(xiàng)簡(jiǎn)單例子
這篇文章主要給大家介紹了關(guān)于java實(shí)用小技巧之判斷l(xiāng)ist是否有重復(fù)項(xiàng)的相關(guān)資料,在開發(fā)工作中我們有時(shí)需要去判斷List集合中是否含有重復(fù)的元素,需要的朋友可以參考下2023-10-10

