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>