Mybaits-配置

mybatis.jpg

properties
setting
typeAliases
typeHandler
objectFactory
environment

歡迎訪問本人博客:http://wangnan.tech

Mybatis配置XML文件的層次結(jié)構(gòu)

這些層次是不能夠顛倒順序的,如果顛倒順序错蝴,mybatis解析xml文件時(shí)會(huì)出現(xiàn)異常

properties元素

properties元素提供三種配置方式

  • property子元素
  • property配置文件
  • 程序參數(shù)傳遞

property子元素

如圖:

這樣我們就可以在上下文中使用以及配置好的屬性了

如圖:

<dataSource type="POOLED">
    <property name="driver" value="${dirver}"
    <property name="url" value="${url}"
    <property name="username" value="${username}"
    <property name="password" value="${password}"
</dataSource>

properties

使用配置文件,方便我們在多個(gè)配置文件中重復(fù)使用它們颓芭,也方便日后維護(hù)和隨時(shí)修改

如圖:

我們properties文件放在源包下顷锰,只要這樣引入這個(gè)配置文件即可

<properties resource="jdbc.properties"/>

程序參數(shù)傳遞

適用場景舉例:生產(chǎn)數(shù)據(jù)庫用戶名和密碼對于開發(fā)者保密,運(yùn)維人員要求文件中的數(shù)據(jù)庫用戶和密碼進(jìn)行加密畜伐,需要在代碼中進(jìn)行解碼傳入配置馍惹,這個(gè)時(shí)候需要通過編碼的范式滿足我們遇到的場景

如圖:
InputStream cfgStream = null;

decode為解密方法

優(yōu)先級

mybtis支持這三種方式同時(shí)出現(xiàn)躺率,可以重復(fù)配置同一屬性

mybtis按照下面的順序加載:

  1. 在properties元素體內(nèi)的指定屬性首先被讀取
  2. 根據(jù)properties預(yù)算內(nèi)宿的resource屬性讀取類路徑下屬性文件玛界,或者根據(jù)url屬性指定的路徑讀取屬性文件,并覆蓋已讀取的同名屬性
  3. 讀取作為方法參數(shù)傳遞的屬性悼吱,并覆蓋已讀取的同名屬性

總結(jié):優(yōu)先級 代碼>配置文件>properties屬性

setting

  • setting在mybatis中是最復(fù)雜的配置慎框,也是最重要的配置
  • 即使不配置setting,mybatis也可以正常工作
  • 了解setting配置內(nèi)容后添,十分必要

如圖:

typeAliases

  • 別名是一個(gè)指代的名稱笨枯,因?yàn)轭惖娜^長,我們希望用簡短的方式去指代它
  • 這個(gè)名稱可以在mybatis上下文中使用
  • 別名不區(qū)分大小寫
  • 一個(gè)別名實(shí)例是在解析配置文件時(shí)生成的遇西,然后長期保持在configuration對象中馅精,供隨時(shí)使用

類型:

  • 系統(tǒng)定義的別名
  • 自定義別名

系統(tǒng)定義的別名

注:支持?jǐn)?shù)組類型的只要加“[]”即可,比如Date數(shù)組可以用date[]代替

自定義別名

方式:

  • 配置文件
  • 代碼

配置文件:

這樣mybtis的上下文中使用role來替代其全路徑

注解+自動(dòng)掃描

11.png

使用注解@Alias粱檀,Mybatis會(huì)自動(dòng)掃描包洲敢,將掃描到的類裝載到上下文中以便將來使用

注意:配置了包掃描路徑,沒有注解的類茄蚯,mybatis也會(huì)裝載压彭,只是說它將把別名設(shè)置為類名第一個(gè)字母小寫

typeHandler

  • Mybatis在預(yù)處理語句(PrepareStatement)中設(shè)置一個(gè)參數(shù)時(shí),或者從結(jié)果集(ResultSet)中取出一個(gè)值時(shí)渗常,都會(huì)用注冊了的typeHandler進(jìn)行處理
  • 由于數(shù)據(jù)庫廠商不同壮不,參數(shù)不同,typeHandler允許根據(jù)項(xiàng)目的需要自定義設(shè)置java傳遞到數(shù)據(jù)庫的參數(shù)中皱碘,或者從數(shù)據(jù)庫讀出的數(shù)據(jù)询一,進(jìn)行特殊處理
  • 在使用枚舉的時(shí)候我們常常使用typeHandler進(jìn)行轉(zhuǎn)換

類型:

  • 系統(tǒng)定義
  • 用戶自定義

typeHandler常用的配置為java類型(javaType)、JDBC類型(jdbcType),typeHandler的作用就是將javaType和jdbcType互相轉(zhuǎn)化

由于篇幅考慮癌椿,typehandler不詳細(xì)說明

ObjectFactory

當(dāng)mybatis在構(gòu)建一個(gè)結(jié)果返回的時(shí)候健蕊,都會(huì)使用ObjectFactory去構(gòu)建POJP,在mybatis中可以定制自己的ObjectFactory如失,一般來說我們使用默認(rèn)的ObjectFactory即可绊诲,默認(rèn)的ObjectFactory是由org.apache.ibatis.reflection.DefaultObjectFactory來提供服務(wù)的

如果要定制特定的工廠則需要進(jìn)行配置

environment

配置環(huán)境可以注冊多個(gè)數(shù)據(jù)源

每個(gè)數(shù)據(jù)源分為兩大部分:

  • 數(shù)據(jù)庫源的配置
  • 數(shù)據(jù)庫事務(wù)的配置

如圖:

說明:

  • environments中的屬性default,標(biāo)明在缺省的情況下我們將啟用哪個(gè)數(shù)據(jù)源配置
  • 屬性id這只這個(gè)數(shù)據(jù)源的標(biāo)志褪贵,以便在mybatis上下文中使用它

transactionManager配置的是數(shù)據(jù)庫事務(wù)掂之,type屬性有三種配置方式:

  1. JDBC 采用JDBC方式管理事務(wù)抗俄,在獨(dú)立編碼中常常使用
  2. MANAGED,采用容器方式管理事務(wù),在JNDI數(shù)據(jù)源中常用
  3. 自定義世舰,由使用者自定義动雹,適用于特殊應(yīng)用
  • property元素則是可以配置數(shù)據(jù)源的各類屬性,我們配置了autoCommit=false則是要求數(shù)據(jù)源不自動(dòng)提交
  • dataSource標(biāo)簽跟压,是配置數(shù)據(jù)源連接的信息胰蝠,type屬性是提供我們隊(duì)數(shù)據(jù)庫連接方式的配置

type:

  1. UNPOOLED,非連接池?cái)?shù)據(jù)庫
  2. POOLED,連接池?cái)?shù)據(jù)庫
  3. JNDI,JNDI數(shù)據(jù)源
  4. 自定義數(shù)據(jù)源

引入映射器方法

映射器是Mybatis最復(fù)雜、最核心的組件

引入引射器的方法

  1. 用文件路徑引入
  2. 用包名引入
  3. 用類注冊引入
  4. 用xml引入

如圖:

(注:內(nèi)容整理自《深入淺出MyBatis技術(shù)原理與實(shí)戰(zhàn)》)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末震蒋,一起剝皮案震驚了整個(gè)濱河市茸塞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌查剖,老刑警劉巖钾虐,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異笋庄,居然都是意外死亡效扫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門直砂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來菌仁,“玉大人,你說我怎么就攤上這事静暂〖们穑” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵籍嘹,是天一觀的道長闪盔。 經(jīng)常有香客問我,道長辱士,這世上最難降的妖魔是什么泪掀? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮颂碘,結(jié)果婚禮上异赫,老公的妹妹穿的比我還像新娘。我一直安慰自己头岔,他們只是感情好塔拳,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著峡竣,像睡著了一般靠抑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上适掰,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天颂碧,我揣著相機(jī)與錄音荠列,去河邊找鬼。 笑死载城,一個(gè)胖子當(dāng)著我的面吹牛肌似,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诉瓦,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼川队,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了睬澡?” 一聲冷哼從身側(cè)響起固额,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎猴贰,沒想到半個(gè)月后对雪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體河狐,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡米绕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了馋艺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片栅干。...
    茶點(diǎn)故事閱讀 40,615評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖捐祠,靈堂內(nèi)的尸體忽然破棺而出碱鳞,到底是詐尸還是另有隱情,我是刑警寧澤踱蛀,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布窿给,位于F島的核電站,受9級特大地震影響率拒,放射性物質(zhì)發(fā)生泄漏崩泡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一猬膨、第九天 我趴在偏房一處隱蔽的房頂上張望角撞。 院中可真熱鬧,春花似錦勃痴、人聲如沸谒所。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽劣领。三九已至,卻和暖如春铁材,著一層夾襖步出監(jiān)牢的瞬間尖淘,已是汗流浹背庶弃。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留德澈,地道東北人歇攻。 一個(gè)月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像梆造,于是被迫代替她去往敵國和親缴守。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1. 簡介 1.1 什么是 MyBatis 镇辉? MyBatis 是支持定制化 SQL屡穗、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,527評論 0 4
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)忽肛,斷路器村砂,智...
    卡卡羅2017閱讀 134,704評論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,859評論 6 342
  • MyBatis配置xml層次結(jié)構(gòu),而且必須注意其順序屹逛。 MyBatis官網(wǎng)中文XML映射配置文件 1.proper...
    落葉飛逝的戀閱讀 2,346評論 0 4
  • 產(chǎn)假回校上班被學(xué)生圍著問:“老師席镀,你是不是做媽媽了诱桂?” 我遲疑了一下,笑道:“你們覺得呢淑掌?” 孩子們各自有各自的理...
    紫芋灣閱讀 1,131評論 9 11