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>