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