MyBatis之SqlMapConfig.xml
1.介紹
SqlMapConfig.xml是mybatis的全局配置文件,mybatis通過它創建SqlSessionFactory
配置內容:
properties(屬性) settings(全局配置參數) typeAliases(類型別名) typeHandlers(類型處理器) plugins(插件) environments(環境集合屬性對象) environment(環境子屬性對象) transactionManager(事務管理) dataSource(數據源) mappers(映射器)
2.properties(屬性)
SqlMapConfig.xml可以引用java屬性文件中的配置信息如下:
在classpath下定義db.properties文件,
SqlMapConfig.xml引用如下:
注意: MyBatis 將按照下面的順序來加載屬性:
- 在 properties 元素體內定義的屬性首先被讀取。
- 然後會讀取properties 元素中resource或 url 加載的屬性,它會覆
蓋已讀取的同名屬性。 - 最後讀取parameterType傳遞的屬性,它會覆蓋已讀取的同名屬性。
因此,通過parameterType傳遞的屬性具有最高優先級,resource或 url 加載的屬性次之,最低優先級的是 properties 元素體內定義的屬性。
3.settings(配置)
mybatis全局配置參數,全局參數將會影響mybatis的運行行爲
4.typeAliases(類型別名)
4.1mybatis支持別名:
別名 | 映射的類型 |
---|---|
_byte | byte |
_long | long |
_short | short |
_int | int |
_integer | int |
_double | double |
_float | float |
_boolean | boolean |
string | String |
byte | Byte |
long | Long |
short | Short |
int | Integer |
integer | Integer |
double | Double |
float | Float |
boolean | Boolean |
date | Date |
decimal | BigDecimal |
bigdecimal | BigDecimal |
4.2.自定義別名
在SqlMapConfig.xml中配置:
使用別名
5.typeHandlers(類處理器)
類型處理器用於java類型和jdbc類型映射,如下:
<select id="findUserById" parameterType="int" resultType="user">
select * from user where id = #{id}
</select>
mybatis自帶的類型處理器基本上滿足日常需求,不需要單獨定義。
mybatis支持類型處理器:
類型處理器 | Java類型 | JDBC類型 |
---|---|---|
BooleanTypeHandler | Boolean,boolean | 任何兼容的布爾值 |
ByteTypeHandler | Byte,byte | 任何兼容的數字或字節類型 |
ShortTypeHandler | Short,short | 任何兼容的數字或短整型 |
IntegerTypeHandler | Integer,int | 任何兼容的數字和整型 |
LongTypeHandler | Long,long | 任何兼容的數字或長整型 |
FloatTypeHandler | Float,float | 任何兼容的數字或單精度浮點型 |
DoubleTypeHandler | Double,double | 任何兼容的數字或雙精度浮點型 |
BigDecimalTypeHandler | BigDecimal | 任何兼容的數字或十進制小數類型 |
StringTypeHandler | String | CHAR和VARCHAR類型 |
ClobTypeHandler | String | CLOB和LONGVARCHAR類型 |
NStringTypeHandler | String | NVARCHAR和NCHAR類型 |
NClobTypeHandler | String | NCLOB類型 |
ByteArrayTypeHandler | byte[] | 任何兼容的字節流類型 |
BlobTypeHandler | byte[] | BLOB和LONGVARBINARY類型 |
DateTypeHandler | Date(java.util) | TIMESTAMP類型 |
DateOnlyTypeHandler | Date(java.util) | DATE類型 |
TimeOnlyTypeHandler | Date(java.util) | TIME類型 |
SqlTimestampTypeHandler | Timestamp(java.sql) | TIMESTAMP類型 |
SqlDateTypeHandler | Date(java.sql) | DATE類型 |
SqlTimeTypeHandler | Time(java.sql) | TIME類型 |
ObjectTypeHandler | 任意 | 其他或未指定類型 |
EnumTypeHandler | Enumeration類型 | VARCHAR-任何兼容的字符串類型,作爲代碼存儲(而不是索引)。 |
6.mappers(映射器)
Mapper配置的幾種方法: