Confiuration就是mybatis的配置文件,其結果如下:
properties(屬性)
settings(全局配置參數)
typeAliases(類型別名)
typeHandlers(類型處理器)
objectFactory(對象工廠)
plugins(插件)
environments(環境集合屬性對象)
environment(環境子屬性對象)
transactionManager(事務管理)
dataSource(數據源)
mappers(映射器)
在寫Confiuration文件時,很重要的一點就是配置順序要按照上面的結構,不能調換順序!
一、properties
就像普通的外部數據庫信息的使用db.properties
jdbc.url=XXX
jdbc.username=xxx
文件中的引用:
<properties resource="db.properties"/>
需要注意的是parameterType傳遞的屬性具有最高優先級,resource或 url 加載的屬性次之,最低優先級的是 properties 元素體內定義的屬性。
二、settings
mybatis的全局信息配置,網上有很多翻譯過來的圖
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
</settings>
三、typeAliases
在xml文件中parameterType和resultType輸入自己定義的POJO類型時需要輸入的是全類名
<select id="findUserByUsername" parameterType="java.lang.String" resultType="com.ydalien.po.User">
當定義了別名後可以使用別名,如:
單個別名的定義
<typeAliases>
<typeAlias alias="User" type="com.ydalien.po.User"/>
</typeAliases>
批量定義別名(別名爲類名,首字母大小寫皆可)
<typeAliases>
<package name="com.ydalien.po"/>
</typeAliases>
定義後我們就可以改成
<select id="findUserByUsername" parameterType="java.lang.String" resultType="User">
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 |
四、typeHandlers
用來處理java類型和jdbc的類型。
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-任何兼容的字符串類型,作爲代碼存儲(而不是索引)。 |
當然還能自己定義(略)
五、objectFactory(略)
六、plugins(略)
七、environments
environments裏可以配置多個environment,每個environment對應一個數據庫環境。
<environments default="development">
<environment id="development">
<!-- 使用jdbc事務管理-->
<transactionManager type="JDBC" />
<!-- 數據庫連接池-->
<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>
八、mappers
Mappers用於告訴Mybatis去哪裏尋找映射文件。
<!-- 加載映射文件 -->
<mappers>
<package name="com.ydalien.mapper"/>
</mappers>