您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何用MyBatis全局配置文件”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何用MyBatis全局配置文件”吧!
MyBatis全局配置文件
settings 設(shè)置
typeAliases 類型命名
存在的問題:
@Alias("")
environments 環(huán)境
transactionManager 事務(wù)管理器
JDBC:JdbcTransactionFactory
databaseIdProvider 數(shù)據(jù)庫廠商標(biāo)識
DB_VENDOR
變短
sql映射文件
總結(jié)
MyBatis 的配置文件包含了影響 MyBatis 行為甚深的設(shè)置(settings
)和屬性(properties
)信息。文檔的
頂層結(jié)構(gòu)如下:
configuration 配置
properties 屬性
settings 設(shè)置
typeAliases 類型命名
typeHandlers 類型處理器
objectFactory 對象工廠
plugins 插件
environments 環(huán)境
environment 環(huán)境變量
transactionManager 事務(wù)管理器
dataSource 數(shù)據(jù)源
databaseIdProvider 數(shù)據(jù)庫廠商標(biāo)識
mappers 映射器
properties 屬性
mybatis
可以使用properties來引入外部properties配置文件的內(nèi)容
resource
:引入類路徑下的資源
url:引入網(wǎng)絡(luò)路徑或者磁盤路徑下的資源
<properties resource="dbconfig.properties"></properties>
如果屬性在不只一個地方進(jìn)行了配置,那么 MyBatis 將按照下面的順序來加載:
在 properties 元素體內(nèi)指定的屬性首先被讀取。
然后根據(jù) properties 元素中的 resource 屬性讀取類路徑下屬性文件或根據(jù) url 屬性指定的路徑讀取屬性文件,并覆蓋已讀取的同名屬性。 – 最后讀取作為方法參數(shù)傳遞的屬性,并覆蓋已讀取的同名屬性。
這是 MyBatis 中極為重要的調(diào)整設(shè)置,它們會改變MyBatis 的運(yùn)行時行為。
setting包含很多重要的設(shè)置項(xiàng)
setting
:用來設(shè)置每一個設(shè)置項(xiàng)
name
:設(shè)置項(xiàng)名
value
:設(shè)置項(xiàng)的取值
mapUnderscoreToCamelCase
:駝峰命名 last_name -> lastName
<settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings>
typeAliases
:可以批量設(shè)置別名這個包下的每一個類
別名不區(qū)分大小寫
創(chuàng)建一個默認(rèn)的別名,就是簡單類名小寫
typeAlias
:為某個java類型起別名
type
:指定要起別名的類型全類名;默認(rèn)別名就是類名小寫:employee
alias
:指定新的別名
package
:為某個包下的所有類批量起別名
name
:指定包名(為當(dāng)前包下以及下面所有的后代包的每一個類都起一個默認(rèn)的別名(類名小寫))
假設(shè)bean包下有一個類Employee,同時在bean包下有一個子包也有一個類叫Employee,此時這兩個包的類名就會沖突,因此還可以使用注解的放上為類創(chuàng)建別名
public class Employee{}
值得注意的是,MyBatis已經(jīng)為許多常見的 Java 類型內(nèi)建了相應(yīng)的類型別名。它們都是大小寫不敏感的,我們在起別名的時候千萬不要占用已有的別名。
mybatis可以配置多種環(huán)境 default指定使用某種環(huán)境,可以達(dá)到快速切換
environments
:配置一個具體的環(huán)境信息;必須有兩個標(biāo)簽,id代表當(dāng)前環(huán)境的唯一標(biāo)識
type
:事務(wù)管理器的類型 [JDBC(使用了 JDBC 的提交和回滾設(shè)置,依賴于從數(shù)據(jù)源得到的連接來管理事務(wù)范圍。)|MANAGED
(不提交或回滾一個連接、讓容器來管理事務(wù)的整個生命周期(比如 JEE應(yīng)用服務(wù)器的上下文))]
自定義事務(wù)管理器 實(shí)現(xiàn)TransactionFactory接口即可
dataSource 數(shù)據(jù)源
type
:數(shù)據(jù)源的類型 [UNPOOLED
(不使用連接池)|POOLED
(使用連接池)|JNDI
(在EJB 或應(yīng)用服務(wù)器這類容器中查找指定的數(shù)據(jù)源)]
自定義數(shù)據(jù)源 實(shí)現(xiàn)DataSourceFactory接口
實(shí)際開發(fā)中我們使用Spring管理數(shù)據(jù)源,并進(jìn)行事務(wù)控制的配置來覆蓋上述配置
databaseIdProvider: 可以根據(jù)不同的數(shù)據(jù)庫廠商執(zhí)行不同的語句。
type
:數(shù)據(jù)庫類型 DB_VENDOR
作用就是得到數(shù)據(jù)庫廠商標(biāo)識(驅(qū)動自帶的),mybatis就能根據(jù)數(shù)據(jù)庫廠商標(biāo)識來執(zhí)行不同的sql
MYSQL Oracle SQL Server
value:為標(biāo)識起一個別名,方便SQL語句使用databaseId屬性引用
會通過 DatabaseMetaData#getDatabaseProductName() 返回的字符串進(jìn)行設(shè)置。由于通常情況下這個字符串都非常長而且相同產(chǎn)品的不同版本會返回不同的值,所以最好通過設(shè)置屬性別名來使其
MyBatis匹配規(guī)則如下:
如果沒有配置databaseIdProvider標(biāo)簽,那么databaseId=null
如果配置了databaseIdProvider標(biāo)簽,使用標(biāo)簽配置的name去匹配數(shù)據(jù)庫信息,匹配上設(shè)置databaseId=配置指定的值,否則依舊為null
如果databaseId不為null,他只會找到配置databaseId的sql語句
MyBatis 會加載不帶 databaseId 屬性和帶有匹配當(dāng)前數(shù)據(jù)庫databaseId 屬性的所有語句。如果同時找到帶有 databaseId 和不帶databaseId 的相同語句,則后者會被舍棄。
mappers 映射器
mapper:注冊一個sql映射
注冊配置文件
resource
:引用類路徑下的sql映射文件
url:用網(wǎng)路路徑下的或者磁盤路徑下的sql映射文件
注冊接口
class:引應(yīng)用接口
接口映射文件,映射文件名必須和接口同名,并且放在同一個目錄下
沒有sql映射文件,所有的sql利用注解寫在接口上
注解寫在接口上
推薦:比較重要和復(fù)雜額Dao接口寫sql映射文件,不重要的簡單的為了開發(fā)快速可以使用注解
package:批量注冊
namespace
:名稱空間;指定為接口的全類名
id
:唯一標(biāo)識
resultType
:返回值類型
#{id}
:從傳遞過來的參數(shù)中取出id值
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="school.xauat.mybatis.dao.EmployeeMapper"> <select id="getEmpById" resultType="employee" > select * from tbl_employee where id = #{id} </select> <select id="getEmpById" resultType="employee" databaseId="mysql"> select * from tbl_employee where id = #{id} </select> <select id="getEmpById" resultType="employee" databaseId="oracle"> select * from tbl_employee where id = #{id} </select> </mapper>
1、接口是編程
原生: Dao -----> DaoImpl
Mybatis: Mapper -----> xxMapper.xml
2、SqlSession代表和數(shù)據(jù)庫的一次會話,用完必須關(guān)閉
3、SqlSession和connection一樣,都是非線程安全的。每次使用都應(yīng)該獲取新的對象
4、mapper接口沒有實(shí)現(xiàn)類,但是Mybatis會為這個接口生成一個代理對象(將接口和xml進(jìn)行綁定)
EmployeeMapper empMapper
= SqlSession.getMapper(Employee.class)
;
5、兩個重要的配置文件
mybatis的全局配置文件;包含數(shù)據(jù)庫連接池信息,事務(wù)管理器信息,系統(tǒng)運(yùn)行信息
sql映射文件:保存了每一個SQL語句的映射信息
將sql抽取出來
感謝各位的閱讀,以上就是“如何用MyBatis全局配置文件”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何用MyBatis全局配置文件這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。