【簡述】
SqlMapConfig.xml是Mybatis的全局配置文件,配置內容如下:
1.properties---------屬性
2.settings-----------全局配置參數
3.typeAliases--------類型別名
4.typeHandlers------類型處理器
5.objectFactory-----對象工廠
6.plugins------------插件
7.environments-----環境集合屬性對象
environments ---------環境子屬性對象
transactionManager----------事務管理
dataSource-------------------數據源
8.mappers ---------映射器
(1)properties屬性
需求:
將數據庫中的連接參數單獨配置在db.properties中,只需要在sqlMapConfig.xml中加載該db.properties配置文件。
在sqlMapConfig.xml中就不需要對數據庫連接參數硬編碼。
配置在db.properties中的優點:方便對參數進行統一的管理,其他的xml文件可以引用該db.properties
原先的【sqlMapConfig.xml】數據庫相關的配置如下:

修改之后的【sqlMapConfig.xml】如下,注意不要忘了<properties resource="db.properties"></properties>

修改之后 在【db.properties】配置文件內容如下

【MyBatis加載屬性的順序】
1.在properties元素體內定的屬性首先被加載。
2.然后會讀取properties元素中resource或url加載的屬性,它會覆蓋已讀取的同名屬性(所以命名要注意)
3.最后會讀取parameterType傳遞的屬性,它會覆蓋已讀取的同名屬性。
【注意】
不要在<properties>元素體內添加任何屬性值,只將屬性值定義在db.properties文件中。
在db.properties文件中定義屬性文件名要有一定的特殊性,例如jdbc.xxx.xxx
(2)settings全局參數配置
MyBatis框架在運行時可以調整一些運行參數
比如:開啟二級緩存、開啟延遲加載。。。。
(3)typeAliases(別名)(學習重點!)
需求:
在mapper.xml中,定義了很多的statement
【默認的一些別名的源碼】
registerAlias("string", String.class);
registerAlias("byte", Byte.class);
registerAlias("long", Long.class);
registerAlias("short", Short.class);
registerAlias("int", Integer.class); registerAlias("integer", Integer.class); //可以發現,parameter="int"或者parameterType="integer"最后都會指向Integer
registerAlias("double", Double.class);
registerAlias("float", Float.class);
registerAlias("boolean", Boolean.class);
registerAlias("byte[]", Byte[].class);
registerAlias("long[]", Long[].class);
registerAlias("short[]", Short[].class);
registerAlias("int[]", Integer[].class);
registerAlias("integer[]", Integer[].class);
registerAlias("double[]", Double[].class);
registerAlias("float[]", Float[].class);
registerAlias("boolean[]", Boolean[].class);
registerAlias("_byte", byte.class);
registerAlias("_long", long.class);
registerAlias("_short", short.class);
registerAlias("_int", int.class);
registerAlias("_integer", int.class);
registerAlias("_double", double.class);
registerAlias("_float", float.class);
registerAlias("_boolean", boolean.class);
registerAlias("_byte[]", byte[].class);
registerAlias("_long[]", long[].class);
registerAlias("_short[]", short[].class);
registerAlias("_int[]", int[].class);
registerAlias("_integer[]", int[].class);
registerAlias("_double[]", double[].class);
registerAlias("_float[]", float[].class);
registerAlias("_boolean[]", boolean[].class);
registerAlias("date", Date.class);
registerAlias("decimal", BigDecimal.class);
registerAlias("bigdecimal", BigDecimal.class);
registerAlias("biginteger", BigInteger.class);
registerAlias("object", Object.class);
registerAlias("date[]", Date[].class);
registerAlias("decimal[]", BigDecimal[].class);
registerAlias("bigdecimal[]", BigDecimal[].class);
registerAlias("biginteger[]", BigInteger[].class);
registerAlias("object[]", Object[].class);
registerAlias("map", Map.class);
registerAlias("hashmap", HashMap.class);
registerAlias("list", List.class);
registerAlias("arraylist", ArrayList.class);
registerAlias("collection", Collection.class);
registerAlias("iterator", Iterator.class);
registerAlias("ResultSet", ResultSet.class);
【針對自己定義的pojo類型的別名】
在【sqlMapper.xml中】,針對單個別名的定義

在【sqlMapper.xml中】,針對批量別名的定義(批量的方式較為常用)
指定包名,MyBatis自動掃描包中的pojo類,自動定義別名,別名就是類名(首字母大小寫均可)

(4)typeHandlers(類型處理器)
MyBatis中通過typeHandlers完成jdbc類型和java類型的轉換。
通常情況下,mybatis提供的類型處理器滿足日常需求,無需自定義。
(5)mappers(映射配置)
1.例子【sqlMapConfig.xml】中通過resource加載單個映射文件的方式:

2.通過mapper接口加載單個映射文件
需要遵循一些規范:需要將XXXmapper.java和XXXmapper.xml映射文件名保持一致,且在一個目錄中。

上邊的規范前提:使用mapper代理方法

3.批量加載
批量加載mapper接口的包名。myBatis自動掃描包下邊的所有的mapper接口進行加載
遵循的規范:需要將XXXmapper.java和XXXmapper.xml映射文件名保持一致,且在一個目錄中。
上邊的規范前提:使用mapper代理方法

