(工程mybatis03
)
一祝懂、Mybatis的全局配置文件票摇,配置內(nèi)容如下:
-
properties
(屬性) -
settings
(全局配置參數(shù)) -
typeAliases
(類型別名) -
typeHandlers
(類型處理器) -
objectFactory
(對(duì)象工廠) -
plugins
(插件) -
environments
(環(huán)境集合屬性對(duì)象) -
environment
(環(huán)境子屬性對(duì)象,environments
的自標(biāo)簽) -
transactionManager
(事務(wù)管理砚蓬,environment
的自標(biāo)簽) -
dataSource
(數(shù)據(jù)源矢门,environment
的自標(biāo)簽) -
mappers
(映射器)
二、properties(屬性)
- 需求:將數(shù)據(jù)庫的連接參數(shù)單獨(dú)配置在
db.properties
中灰蛙,只需要在SqlMapperConfig.xml
中加載該db.properties
的屬性值祟剔。這樣就不需要在硬編碼了。原因是方便對(duì)參數(shù)進(jìn)行統(tǒng)一管理缕允,其他的xml
可以引用該配置文件峡扩。 - 建議:不要在
properties
標(biāo)簽體內(nèi)添加任何屬性值,只將屬性值定義在db.properties
中障本,在db.properties
中定義屬性名要有一定的特殊性教届。比如jdbc.username
。
db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3305/mybatis
jdbc.username=root
jdbc.password=walp1314
在SqlMapConfig.xml
文件中配置此文件
<!-- 加載屬性文件 -->
<properties resource="db.properties">
<!-- 在這里還可以配置一些屬性名和值驾霜,這里的值是首先被讀取的案训,然后再讀取文件中的屬性,同名的會(huì)覆蓋
最后才讀取parameterType傳遞的屬性粪糙,也會(huì)覆蓋掉同名的强霎,這里要注意!H馗浴城舞! -->
</properties>
于是數(shù)據(jù)庫的相關(guān)配置就可以這樣寫:
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
三、setttings全局參數(shù)配置
Mybatis框架在運(yùn)行時(shí)可以調(diào)整一些運(yùn)行參數(shù)寞酿,比如開啟二級(jí)緩存家夺、延遲加載。參考mybatis-settings.xlsx
文件伐弹。在<properties>
標(biāo)簽后面配置拉馋。
四、typeAliases別名(重點(diǎn))
需求:在mapper.xml
中定義了很多Statement
惨好,Statement
需要parameterType
指定輸入?yún)?shù)的類型煌茴、需要resultType
指定輸出結(jié)果的映射類型。
如果在指定類型時(shí)輸入類型的全路徑日川,不方便開發(fā)蔓腐,可以定義一些針對(duì)上面兩個(gè)參數(shù)定義一些別名,比如```parameterType="java.lang.Integer"``逗鸣,對(duì)于這些類型mybatis都為我們定義好了合住。
而針對(duì)pojo類型的別名需要我們自己定義
<!-- typeAliases-->
<typeAliases>
<!-- 針對(duì)單個(gè)別名定義 -->
<typeAlias type="cn.itcast.pojo.User" alias="User"/>
</typeAliases>
說明:之后我們?cè)谑褂胮ojo的時(shí)候就可以直接寫其別名绰精。如
<select id="findUserByName" parameterType="java.lang.String" resultType="User">
但是這是單條記錄的情況,對(duì)于多條記錄的情況為(推薦使用):
<!-- typeAliases-->
<typeAliases>
<package name="cn.itcast.pojo"/>
</typeAliases>
說明:批量別名定義 透葛,需要指定一個(gè)包名笨使,mybatis自動(dòng)掃描pojo類,自動(dòng)定義別名僚害,別名就是類名(首字母大小或小寫都行)硫椰。
五、typeHandlers(類型處理器)
在mybatis中通過typeHandlers
完成jdbc
類型和java
類型的轉(zhuǎn)換萨蚕。一般不需要自定義靶草,mybatis都幫我們做好了。
六岳遥、mappers映射器
單個(gè)映射
<mappers>
<mapper resource="mapper/UserMapper.xml" />
</mappers>
還可以使用這種方式:
<mapper url="http://..."/>
當(dāng)然還可以通過接口來進(jìn)行映射,通過mapper
接口來加載奕翔,要指定的不是映射文件了,而是指定的是class
浩蓉,需要遵循一定的規(guī)范:需要將mapper
接口的類型和mapper.xml
名稱保持一致派继,且在一個(gè)目錄,前提是使用的是mapper
代理的方法捻艳。
<mapper class="cn.itcast.mapper.UserMapper"/>
但是這是針對(duì)映射文件很少的方式驾窟,如果映射文件很多則比較麻煩,下面看批量映射(推薦使用):
<package name="cn.itcast.mapper"/>