MyBatis全局配置文件詳解_第1頁
MyBatis全局配置文件詳解_第2頁
MyBatis全局配置文件詳解_第3頁
MyBatis全局配置文件詳解_第4頁
MyBatis全局配置文件詳解_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第MyBatis全局配置文件詳解目錄MyBatis全局配置文件settings設(shè)置typeAliases類型命名存在的問題:@Alias("")environments環(huán)境transactionManager事務(wù)管理器JDBC:JdbcTransactionFactorydatabaseIdProvider數(shù)據(jù)庫廠商標(biāo)識DB_VENDOR變短sql映射文件總結(jié)

MyBatis全局配置文件

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ò)路徑或者磁盤路徑下的資源

propertiesresource="perties"/properties

如果屬性在不只一個地方進(jìn)行了配置,那么MyBatis將按照下面的順序來加載:

在properties元素體內(nèi)指定的屬性首先被讀取。

然后根據(jù)properties元素中的resource屬性讀取類路徑下屬性文件或根據(jù)url屬性指定的路徑讀取屬性文件,并覆蓋已讀取的同名屬性。–最后讀取作為方法參數(shù)傳遞的屬性,并覆蓋已讀取的同名屬性。

settings設(shè)置

這是MyBatis中極為重要的調(diào)整設(shè)置,它們會改變MyBatis的運行時行為。

setting包含很多重要的設(shè)置項

setting:用來設(shè)置每一個設(shè)置項

name:設(shè)置項名

value:設(shè)置項的取值

mapUnderscoreToCamelCase:駝峰命名last_name-lastName

settings

settingname="mapUnderscoreToCamelCase"value="true"/

/settings

typeAliases類型命名

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)建別名

@Alias("")

publicclassEmployee{}

值得注意的是,MyBatis已經(jīng)為許多常見的Java類型內(nèi)建了相應(yīng)的類型別名。它們都是大小寫不敏感的,我們在起別名的時候千萬不要占用已有的別名。

environments環(huán)境

mybatis可以配置多種環(huán)境default指定使用某種環(huán)境,可以達(dá)到快速切換

environments:配置一個具體的環(huán)境信息;必須有兩個標(biāo)簽,id代表當(dāng)前環(huán)境的唯一標(biāo)識

transactionManager事務(wù)管理器

type:事務(wù)管理器的類型[JDBC(使用了JDBC的提交和回滾設(shè)置,依賴于從數(shù)據(jù)源得到的連接來管理事務(wù)范圍。)|MANAGED(不提交或回滾一個連接、讓容器來管理事務(wù)的整個生命周期(比如JEE應(yīng)用服務(wù)器的上下文))]

JDBC:JdbcTransactionFactory

自定義事務(wù)管理器實現(xiàn)TransactionFactory接口即可

dataSource數(shù)據(jù)源

type:數(shù)據(jù)源的類型[UNPOOLED(不使用連接池)|POOLED(使用連接池)|JNDI(在EJB或應(yīng)用服務(wù)器這類容器中查找指定的數(shù)據(jù)源)]

自定義數(shù)據(jù)源實現(xiàn)DataSourceFactory接口

實際開發(fā)中我們使用Spring管理數(shù)據(jù)源,并進(jìn)行事務(wù)控制的配置來覆蓋上述配置

databaseIdProvider數(shù)據(jù)庫廠商標(biāo)識

databaseIdProvider:可以根據(jù)不同的數(shù)據(jù)庫廠商執(zhí)行不同的語句。

type:數(shù)據(jù)庫類型DB_VENDOR

作用就是得到數(shù)據(jù)庫廠商標(biāo)識(驅(qū)動自帶的),mybatis就能根據(jù)數(shù)據(jù)庫廠商標(biāo)識來執(zhí)行不同的sql

MYSQLOracleSQLServer

value:為標(biāo)識起一個別名,方便SQL語句使用databaseId屬性引用

DB_VENDOR

會通過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:批量注冊

sql映射文件

namespace:名稱空間;指定為接口的全類名

id:唯一標(biāo)識

resultType:返回值類型

xmlversion="1.0"encoding="UTF-8"

!DOCTYPEmapper

PUBLIC"-////DTDMapper3.0//EN"

"/dtd/mybatis-3-mapper.dtd"

mappernamespace="school.xauat.mybatis.dao.EmployeeMapper"

selectid="getEmpById"resultType="employee"

select*fromtbl_employeewhereid=#{id}

/select

selectid="getEmpById"resultType="employee"databaseId="mysql"

select*fromtbl_employeewhereid=#{id}

/select

selectid="getEmpById"resultType="employee"databaseId="oracle"

select*fromtbl_employeewhereid=#{id}

/select

/mapper

總結(jié)

1、接口是編程

原生:Dao-----DaoImpl

Mybatis:Mapper-----xxMapper.xml

2、SqlSession代表和數(shù)據(jù)庫的一次會話,用完必須關(guān)閉

3、SqlSession和connection一樣,都是非線程安全的。每次使用都應(yīng)該獲取新的對象

4、mapper接口沒有實現(xiàn)類

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論