前面有寫到spring+springmvc+mybatis深入學習及搭建(二)——mybatis原始dao開發和mapper代理開發
mybatis的全局配置文件sqlmapconfig.xml,配置內容和順序如下:
properties(屬性)
setting(全局配置參數)
typealiases(類名別名)
typehandlers(類名處理器)
objectfactory(對象工廠)
plugins(插件)
environments(環境集合屬性對象)
environment(環境子屬性對象)
transationmanager(事務管理)
datasource(數據源)
mappers(映射器)
1.properties(屬性)
需求:
將數據庫連接參數單獨配置在db.properties中,只需要在sqlmapconfig.xml中加載db.properties的屬性值。在sqlmapconfig.xml中就不需要對數據庫連接參數硬編碼。
將數據庫連接參數只配置在db.properties中,原因:方便對參數進行統一管理,其它xml可以引用該db.properties。
在classpath下定義db.properties文件:
1
2
3
4
|
jdbc.driver=com.mysql.jdbc.driver jdbc.url=jdbc:mysql: //localhost:3306/mybatisdemo jdbc.username=root jdbc.password= |
在sqlmapconfig.xml加載屬性文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<?xml version= "1.0" encoding= "utf-8" ?> <!doctype configuration public "-//mybatis.org//dtd config 3.0//en" "http://mybatis.org/dtd/mybatis-3-config.dtd" > <configuration> <!-- 加載數據庫文件db.properties --> <properties resource= "db.properties" > <!-- properties中陪可以配置一些屬性名和屬性值,此處的優先加載 --> <!-- <property name= "driver" value= "" /> --> </properties> <!-- 和spring整合后,environments配置將廢除 --> <environments default = "development" > <environment id= "development" > <!-- 使用jdbc事務管理,事務控制由mybatis管理 --> <transactionmanager type= "jdbc" /> <!-- 數據庫連接池,由mybatis管理 --> <datasource type= "pooled" > <property name= "driver" value= "${jdbc.driver}" /> <property name= "url" value= "${jdbc.url}" /> <property name= "username" value= "${jdbc.username}" /> <property name= "password" value= "${jdbc.password}" /> </datasource> </environment> </environments> </configuration> |
properties特性:
注意:mybatis將按照下面的順序來加載屬性:
(1)在properties元素體內定義的屬性首先被讀取。
(2)然后會讀取properties元素中resourse或url加載的屬性,它會覆蓋已讀取的同名屬性。
(3)最后讀取parametertype傳遞的屬性,它會覆蓋已讀取的同名屬性。
所以這里可能就會存在一個問題:假如usermapper.xml中的有一個statement的入參名為name,
而db.properties中也有一個參數名叫name。
那最終usermapper.xml中的select會讀取到name=root,而不是用戶傳入的值。
建議:
不要在properties元素體內添加任何屬性值,只將屬性值定義在properties文件中。
在properties文件中定義屬性名要有一定的特殊性,如:xxx.xxx.xxx,jdbc.url,jbdc.username。
2.settings(全局參數配置)
mybatis框架在運行時可以調整一些運行參數。
比如:開啟二級緩存、開啟延遲加載......
全局參數將會影響mybatis的運行行為。
3.typealiases(別名)重點
3.1需求
在mapper.xml中,定義很多的statement,而statement需要parametertype指定輸入參數的類型,需要resulttype指定輸出結果的映射類型。
如果在指定類型時輸入類型全路徑,不方便進行開發。可以針對parametertype或resulttype指定的類型定義一些別名,在mapper.xml中通過別名定義,方便開發。
3.2mybatis默認支持別名
3.3自定義別名
3.3.1單個別名定義
1
2
3
4
|
<!-- 單個別名定義: --> <typealiases> <typealias type= "joanna.yan.mybatis.entity.user" alias= "user" /> </typealiases> |
引用別名:
1
2
3
|
<select id= "finduserbyid" parametertype= "int" resulttype= "user" > select * from user where id=#{id} </select> |
3.3.2批量定義別名(常用)
1
2
3
4
5
6
7
|
<!-- 批量別名的定義: package :指定包名,mybatis會自動掃描包中的pojo類,自定義別名,別名就是類名(首字母大寫或小寫都可以) --> <typealiases> < package name= "joanna.yan.mybatis.entity" /> <!-- < package name= "其它包名" /> --> </typealiases> |
4.typehandlers(類型處理器)
mybatis中通過typehandlers完成jbdc類型和java類型的轉換。通常情況下,mybatis提供的類型處理器滿足日常需要,不需要自定義。
5.mappers(映射配置)
5.1通過resource加載單個文件
1
2
3
4
5
|
<!-- 加載映射文件 --> <mappers> <!-- 通過resource方法一次加載一個映射文件 --> <mapper resource= "mapper/usermapper.xml" /> </mappers> |
5.2通過mapper接口加載單個mapper
1
2
3
4
5
6
7
8
9
|
<!-- 加載映射文件 --> <mappers> <!-- 通過mapper接口加載單個映射配置文件 遵循一定的規范:需要將mapper接口類名和mapper.xml映射文件名稱保持一致,且在一個目錄中; 以上規范的前提是:使用的是mapper代理方法; --> <mapper class = "joanna.yan.mybatis.mapper.usermapper" /> </mappers> |
按照上邊的規范,將mapper.java和mapper.xml放在一個目錄,且同名。
5.3批量加載mapper(推薦使用)
1
2
3
4
5
6
7
|
<mappers> <!-- 批量加載映射配置文件,mybatis自動掃描包下的mapper接口進行加載; 遵循一定的規范:需要將mapper接口類名和mapper.xml映射文件名稱保持一致,且在一個目錄中; 以上規范的前提是:使用的是mapper代理方法; --> < package name= "joanna.yan.mybatis.mapper" /> </mappers> |
以上所述是小編給大家介紹的spring+springmvc+mybatis深入學習及搭建(三)之mybatis全局配置文件解析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
原文鏈接:http://www.cnblogs.com/Joanna-Yan/p/6874672.html