(工程mybatis03)
一、Mybatis的全局配置文件,配置內(nèi)容如下:
-
properties(屬性) -
settings(全局配置參數(shù)) -
typeAliases(類型別名) -
typeHandlers(類型處理器) -
objectFactory(對象工廠) -
plugins(插件) -
environments(環(huán)境集合屬性對象) -
environment(環(huán)境子屬性對象,environments的自標簽) -
transactionManager(事務管理,environment的自標簽) -
dataSource(數(shù)據(jù)源,environment的自標簽) -
mappers(映射器)
二、properties(屬性)
- 需求:將數(shù)據(jù)庫的連接參數(shù)單獨配置在
db.properties中,只需要在SqlMapperConfig.xml中加載該db.properties的屬性值。這樣就不需要在硬編碼了。原因是方便對參數(shù)進行統(tǒng)一管理,其他的xml可以引用該配置文件。 - 建議:不要在
properties標簽體內(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">
<!-- 在這里還可以配置一些屬性名和值,這里的值是首先被讀取的,然后再讀取文件中的屬性,同名的會覆蓋
最后才讀取parameterType傳遞的屬性,也會覆蓋掉同名的,這里要注意!??! -->
</properties>
于是數(shù)據(jù)庫的相關配置就可以這樣寫:
<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框架在運行時可以調(diào)整一些運行參數(shù),比如開啟二級緩存、延遲加載。參考mybatis-settings.xlsx文件。在<properties>標簽后面配置。
四、typeAliases別名(重點)
需求:在mapper.xml中定義了很多Statement,Statement需要parameterType指定輸入?yún)?shù)的類型、需要resultType指定輸出結果的映射類型。
如果在指定類型時輸入類型的全路徑,不方便開發(fā),可以定義一些針對上面兩個參數(shù)定義一些別名,比如```parameterType="java.lang.Integer"``,對于這些類型mybatis都為我們定義好了。
而針對pojo類型的別名需要我們自己定義
<!-- typeAliases-->
<typeAliases>
<!-- 針對單個別名定義 -->
<typeAlias type="cn.itcast.pojo.User" alias="User"/>
</typeAliases>
說明:之后我們在使用pojo的時候就可以直接寫其別名。如
<select id="findUserByName" parameterType="java.lang.String" resultType="User">
但是這是單條記錄的情況,對于多條記錄的情況為(推薦使用):
<!-- typeAliases-->
<typeAliases>
<package name="cn.itcast.pojo"/>
</typeAliases>
說明:批量別名定義 ,需要指定一個包名,mybatis自動掃描pojo類,自動定義別名,別名就是類名(首字母大小或小寫都行)。
五、typeHandlers(類型處理器)
在mybatis中通過typeHandlers完成jdbc類型和java類型的轉(zhuǎn)換。一般不需要自定義,mybatis都幫我們做好了。
六、mappers映射器
單個映射
<mappers>
<mapper resource="mapper/UserMapper.xml" />
</mappers>
還可以使用這種方式:
<mapper url="http://..."/>
當然還可以通過接口來進行映射,通過mapper接口來加載,要指定的不是映射文件了,而是指定的是class,需要遵循一定的規(guī)范:需要將mapper接口的類型和mapper.xml名稱保持一致,且在一個目錄,前提是使用的是mapper代理的方法。
<mapper class="cn.itcast.mapper.UserMapper"/>
但是這是針對映射文件很少的方式,如果映射文件很多則比較麻煩,下面看批量映射(推薦使用):
<package name="cn.itcast.mapper"/>