mybatis配置檔案 SqlMapConfig.xml
SqlMapConfig.xml
mybatis的全域性配置檔案SqlMapConfig.xml(名稱不固定),配置內容如下:
properties(屬性) settings(全域性配置引數) typeAliases(類型別名) typeHandlers(型別處理器) objectFactory(物件工廠) plugins(外掛) environments(環境集合屬性物件) environment(環境子屬性物件) transactionManager(事務管理) dataSource(資料來源) mappers |
1、properties屬性
需求:
將資料庫連線引數單獨配置在db.properties中,只需要在SqlMapConfig.xml中載入db.properties的屬性值。
在SqlMapConfig.xml中就不需要對資料庫連線引數硬編碼。
將資料庫連線引數只配置在db.properties中,原因:方便對引數進行統一管理,其它xml可以引用該db.properties。
在sqlMapConfig.xml載入屬性檔案:
properties特性:
注意: MyBatis 將按照下面的順序來載入屬性:
建議: 1、不要在properties元素體內新增任何屬性值,只將屬性值定義在properties檔案中。 2、在properties檔案中定義屬性名要有一定的特殊性,如:XXXXX.XXXXX.XXXX |
2、settings全域性引數配置
mybatis框架在執行時可以調整一些執行引數。
比如:開啟二級快取、開啟延遲載入。。
全域性引數將會影響mybatis的執行行為。
詳細參見“學習資料/mybatis-settings.xlsx”檔案
3、typeAliases(別名)重點
需求
在mapper.xml中,定義很多的statement,statement需要parameterType指定輸入引數的型別、需要resultType指定輸出結果的對映型別。
如果在指定型別時輸入型別全路徑,不方便進行開發,可以針對parameterType或resultType指定的型別定義一些別名,在mapper.xml中通過別名定義,方便開發。
mybatis預設支援別名
別名 |
對映的型別 |
_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 |
自定義別名
<!-- 別名定義 --> <typeAliases> <!-- 針對單個別名定義 type:型別的路徑 alias:別名 --> <typeAlias type="cn.itcast.mybatis.po.User" alias="user"/> <!-- 批量別名定義 (常用) 指定包名,mybatis自動掃描包中的po類,自動定義別名,別名就是類名(首字母大寫或小寫都可以)--> <package name="cn.itcast.mybatis.po"/> </typeAliases> |
引用別名:
4、typeHandlers(型別處理器)
mybatis中通過typeHandlers完成jdbc型別和java型別的轉換。
通常情況下,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-任何相容的字串型別,作為程式碼儲存(而不是索引)。 |
5、mappers(對映配置)
<!-- 載入 對映檔案 --> <mappers> <!--通過resource方法一次載入一個對映檔案,可以不在同一包下 --> <mapper resource="sqlmap/User.xml"/> <!-- 通過mapper介面載入單個 對映檔案 遵循一些規範:需要將mapper介面類名和mapper.xml對映檔名稱保持一致,且在一個目錄中。 上邊規範的前提是:使用的是mapper代理方法 --> <mapper class="cn.itcast.mybatis.mapper.UserMapper"/> <!-- 批量載入mapper (推薦使用) 指定mapper介面的包名,mybatis自動掃描包下邊所有mapper介面進行載入 遵循一些規範:需要將mapper介面類名和mapper.xml對映檔名稱保持一致,且在一個目錄中。 上邊規範的前提是:使用的是mapper代理方法 --> <package name="cn.itcast.mybatis.mapper"/> </mappers> |