11_關於SqlMapperConfig.xml


【簡述】

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代理方法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM