MyBatis主配置文件(转载)
Posted 张小贱1987
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis主配置文件(转载)相关的知识,希望对你有一定的参考价值。
原文地址:http://limingnihao.iteye.com/blog/1060764
其中高亮字体是我的理解。
在定义sqlSessionFactory时需要指定MyBatis主配置文件:
-
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
-
<property name="configLocation" value="classpath:mybatis-config.xml" />
-
<property name="dataSource" ref="dataSource" />
-
</bean>
configLocation:mybatis-config.xml这个配置其实是可以没有的,如果不配置,那么一切都可以使用默认设置。包括mappers。因为sqlSessionFactory可以配置一个"mapperLocations"属性,用来定义去哪里找mapper的xml配置。
MyBatis配置文件中大标签configuration下子标签包括:
configuration
|--- properties
|--- settings
|--- typeAliases
|--- typeHandlers
|--- objectFactory
|--- plugins
|--- environments
|--- |--- environment
|--- |--- |--- transactionManager
|--- |--- |__ dataSource
|__ mappers
4.1 properties属性
properties和java的.properties的配置文件有关。配置properties的resource指定.properties的路径,然后再在properties标签下配置property的name和value,则可以替换.properties文件中相应属性值。
-
<!-- 属性替换 -->
-
<properties resource="mysql.properties">
-
<property name="jdbc.driverClassName" value="com.mysql.jdbc.Driver"/>
-
<property name="jdbc.url" value="jdbc:mysql://localhost:3306/student_manager"/>
-
<property name="username" value="root"/>
-
<property name="password" value="limingnihao"/>
-
</properties>
properties可以用来配置数据源的,因为在environments 中是可以配置dataSource和transactionManager的,但是数据源一般都是在sqlSessionFactory中通过dataSource属性指定的一个bean,这两个地方都可以配置datasource,我猜想是,如果使用了spring来管理,可是使用spring来管理dataSource和transaction,所以可以不配置mybatis-config.xml中的environments。但是如果是采用的非spring,那么就可以在mybatis-config.xml中配置数据源和事务机制了(其实非spring也可以通过java代码自己set,只不过非spring一般不会这么做吧)。
4.2 settings设置
这是MyBatis 修改操作运行过程细节的重要的步骤。下方这个表格描述了这些设置项、含义和默认值。
设置项 |
描述 |
允许值 |
默认值 |
cacheEnabled |
对在此配置文件下的所有cache 进行全局性开/关设置。 |
true | false |
true |
lazyLoadingEnabled |
全局性设置懒加载。如果设为\'false\',则所有相关联的都会被初始化加载。 |
true | false |
true |
aggressiveLazyLoading |
当设置为\'true\'的时候,懒加载的对象可能被任何懒属性全部加载。否则,每个属性都按需加载。 |
true | false |
true |
multipleResultSetsEnabled |
允许和不允许单条语句返回多个数据集(取决于驱动需求) |
true | false |
true |
useColumnLabel |
使用列标签代替列名称。不同的驱动器有不同的作法。参考一下驱动器文档,或者用这两个不同的选项进行测试一下。 |
true | false |
true |
useGeneratedKeys |
允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。 |
true | false |
false |
autoMappingBehavior |
指定MyBatis 是否并且如何来自动映射数据表字段与对象的属性。PARTIAL将只自动映射简单的,没有嵌套的结果。FULL 将自动映射所有复杂的结果。 |
NONE, PARTIAL, FULL |
PARTIAL |
defaultExecutorType |
配置和设定执行器,SIMPLE 执行器执行其它语句。REUSE 执行器可能重复使用prepared statements 语句,BATCH执行器可以重复执行语句和批量更新。 |
SIMPLE REUSE BATCH |
SIMPLE |
defaultStatementTimeout |
设置一个时限,以决定让驱动器等待数据库回应的多长时间为超时 |
正整数 |
Not Set (null) |
例如:
-
<settings>
-
<setting name="cacheEnabled" value="true" />
-
<setting name="lazyLoadingEnabled" value="true" />
-
<setting name="multipleResultSetsEnabled" value="true" />
-
<setting name="useColumnLabel" value="true" />
-
<setting name="useGeneratedKeys" value="false" />
-
<setting name="enhancementEnabled" value="false" />
-
<setting name="defaultExecutorType" value="SIMPLE" />
-
</settings>
4.3 typeAliases类型别名
类型别名是Java 类型的简称。
它仅仅只是关联到XML 配置,简写冗长的JAVA 类名。例如:
-
<typeAliases>
-
<typeAlias alias="UserEntity" type="com.manager.data.model.UserEntity" />
-
<typeAlias alias="StudentEntity" type="com.manager.data.model.StudentEntity" />
-
<typeAlias alias="ClassEntity" type="com.manager.data.model.ClassEntity" />
-
</typeAliases>
使用这个配置,"StudentEntity"就能在任何地方代替"com.manager.data.model.StudentEntity"被使用。
这是懒人配置会降低程序的可读性。不建议使用。
对于普通的Java类型,有许多内建的类型别名。它们都是大小写不敏感的,由于重载的名字,要注意原生类型的特殊处理。
别名 |
映射的类型 |
_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 |
object |
Object |
map |
Map |
hashmap |
HashMap |
list |
List |
arraylist |
ArrayList |
collection |
Collection |
iterator |
Iterator |
别名可以用在mapper xml的parameterType和resultType中。
4.4 typeHandlers类型句柄
无论是MyBatis在预处理语句中设置一个参数,还是从结果集中取出一个值时,类型处理器被用来将获取的值以合适的方式转换成Java类型。下面这个表格描述了默认的类型处理器。
类型处理器 |
Java类型 |
JDBC类型 |
BooleanTypeHandler |
Boolean,boolean |
任何兼容的布尔值 |
ByteTypeHandler |
Byte,byte |
任何兼容的数字或字节类型 |
ShortTypeHandler |
Mybatis学习-Mybatis主配置文件 |