title: MyBatis之優(yōu)化MyBatis配置文件中的配置
tags: MyBatis
categories: MyBatis
若圖片無法顯示,請前往我的博客查看,相應(yīng)文章鏈接:http://codingxiaxw.cn/2016/11/08/34-mybatis%E4%BC%98%E5%8C%96%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E9%85%8D%E7%BD%AE/
MyBatis配置文件很重要,首先我們來看看MyBatis配置文件中的內(nèi)容和順序:
<properties>(屬性)
<setting>(全局配置參數(shù))
<typeAliases>(類型別名)
<typeHandlers>(類型處理器)
<objectFactory>(對象工廠)
<plugins>(插件)
<environments>(環(huán)境集合屬性對象)
<environment>(環(huán)境子屬性對象)
<transactionManager>(事務(wù)管理)
dataSource>(數(shù)據(jù)源)
<mappers>(映射器)
文件目錄結(jié)構(gòu)如下:
1.<properties>屬性定義
可以把一些通用的屬性值配置在屬性文件中,加載到mybatis運(yùn)行環(huán)境內(nèi)。例如創(chuàng)建db.properties文件,然后在SqlMapperConfig.xml中進(jìn)行配置。db.properties文件內(nèi)容如下:

然后在SqlMapperConfig.xml中進(jìn)行配置:
[圖片上傳失敗...(image-e00850-1526286046195)]
然后在<environments>標(biāo)簽中用${}符號做如下修改:

注意:Mybatis將按照下面的順序來加載屬性
- 1.在properties標(biāo)簽之間定義的屬性首先被讀取。
- 2.然后會讀取properties標(biāo)簽內(nèi)部resource或url的屬性,它會覆蓋已讀取的同名屬性。
- 3.最后讀取parameterType(即insert標(biāo)簽或是update標(biāo)簽或是...)傳遞的屬性,它會覆蓋已讀取的同名屬性。
所以我們建議使用properties標(biāo)簽時(shí),不要在properties標(biāo)簽之間定義屬性,只引用在.properties文件中定義的屬性,并且.properties文件中定義的key值要有一些特殊的規(guī)則。例如我上述定義key值時(shí)前面都加了jdbc.的前綴。
2.<settings>全局參數(shù)配置
mybatis運(yùn)行時(shí)可以調(diào)整一些全局參數(shù)(相當(dāng)于軟件的運(yùn)行參數(shù))。根據(jù)使用需求進(jìn)行參數(shù)配置。但是要注意:小心配置,配置參數(shù)會影響mybatis的執(zhí)行。
ibatis的全局配置參數(shù)中包括很多的性能參數(shù)(最大線程數(shù)、最大等待時(shí)間…),通過調(diào)整這些性能參數(shù)使ibatis達(dá)到高性能的運(yùn)行,而mybatis沒有這些性能參數(shù),由mybatis自動(dòng)調(diào)節(jié)。
3.<typeAliases>屬性
可以將parameterType、resultType中指定的類型通過別名引用。MyBatis提供了很多的別名如下:[圖片上傳失敗...(image-d951ee-1526286046195)]
這里我們采用自定義的別名,在SqlMapperConfig.xml中進(jìn)行如下配置:

里面包括定義單個(gè)別名和批量別名定義(即一次性定義一個(gè)包下所有.java文件的別名)。
定義別名后這樣我們在parameterType和resultType中使用時(shí)就不用再繁瑣的指定類的全限定類名了,像下面這樣使用即可
4.<typeHandlers>屬性
類型處理器將java類型和jdbc類型進(jìn)行映射,mybatis提供了很多類型處理器,一般情況下夠用了。
5.<mapper>映射器屬性
之前我們在配置文件中使用的<mapper>標(biāo)簽內(nèi)容為:<mapper resource=“mapper/UserMapper.xml”/>,接下來我要講的是另一種在配置文件中映射mapper動(dòng)態(tài)代理的方法。在配置文件中這樣配置<mapper class=“mapper.UserMapper”/>,這樣的要求需要保證UserMapper.xml文件和UserMapper.java在同一個(gè)包下且.xml文件和.java文件名要同名。
同上方別名的配置,當(dāng)包下出現(xiàn)多個(gè)Mapper.java和Mapper.xml時(shí)我們采用批量配置:<package name=“mapper”/>,代碼如下:[圖片上傳失敗...(image-43a838-1526286046195)]
2018.3.19更
歡迎加入我的Java交流1群:659957958。群里目前已有1800人,每天都非?;钴S,但為了篩選掉那些不懷好意的朋友進(jìn)來搞破壞,所以目前入群方式已改成了付費(fèi)方式,你只需要支付9塊錢,即可獲取到群文件中的所有干貨以及群里面各位前輩們的疑惑解答;為了鼓勵(lì)良好風(fēng)氣的發(fā)展,讓每個(gè)新人提出的問題都得到解決,所以我將得到的入群收費(fèi)收入都以紅包的形式發(fā)放到那些主動(dòng)給新手們解決疑惑的朋友手中。在這里,我們除了談技術(shù),還談生活、談理想;在這里,我們?yōu)槟愕膶W(xué)習(xí)方向指明方向,為你以后的求職道路提供指路明燈;在這里,我們把所有好用的干貨都與你分享。還在等什么,快加入我們吧!
2018.4.21更:如果群1已滿或者無法加入,請加Java學(xué)習(xí)交流2群:305335626 。群2作為群1的附屬群,除了日常的技術(shù)交流、資料分享、學(xué)習(xí)方向指明外,還會在每年互聯(lián)網(wǎng)的秋春招時(shí)節(jié)在群內(nèi)發(fā)布大量的互聯(lián)網(wǎng)內(nèi)推方式,話不多說,快上車吧!
6.聯(lián)系
If you have some questions after you see this article,you can tell your doubts in the comments area or you can find some info by clicking these links.