Mybatis配置文件
配置文件一般起名为:mybatis-config.xml。常用属性的配置模板可以参考:Mybatis配置文件模板。
属性
除了 properties 和 settings,其余的都可以在 Spring 中配置。集成Spring后,基本不需要使用这个配置文件了。
| 属性名 | 作用 | 备注 |
|---|---|---|
properties |
配置的属性可以在配置文件的其他位置进行引用 | 用它来解耦,可以使用 resource="db.properties" 来引入其他配置文件 |
settings |
用于指定MyBatis的一些全局配置属性,改变MyBatis的行为 | |
typeAliases |
别名,为Java类型设置一个短的名字,映射时方便使用;分为系统定义别名和自定义别名 | 可以通过xml和注解配置 |
typeHandlers |
用于jdbcType与javaType之间的转换 | 参考TypeHandlerRegistry类 |
ObjectFactory |
MyBatis每次创建结果对象的新实例时,它都会使用对象工厂(ObjectFactory)去构建POJO | |
plugins |
插件,MyBatis允许你在已映射的语句执行过程中的某一点进行拦截调用 | |
environments |
用于配置多个数据源,每个数据源分为数据库源和事务的配置 | |
databaseIdProvider |
MyBatis可以根据不同的数据库厂商执行不同的语句,用于一个系统内多厂商数据源支持 | |
mappers |
配置引入映射器的方法。可以使用相对于类路径的资源引用、或完全限定资源定位符(包括file:///的URL),或类名和包名等等 |
settings
| 参数 | 作用 | 取值 | 默认值 |
|---|---|---|---|
cacheEnabled |
缓存的全局开关 | true;false | true |
lazyLoadingEnabled |
延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态 | true;false | false |
aggressiveLazyLoading |
当启用时,对任意延迟属性的调用会使带有延迟加载属性的对象完整加载。反之,每种属性将会按需加载。 | true;false | true |
multipleResultSetsEnabled |
是否允许单一语句返回多结果集,需要兼容驱动 | true;false | true |
useColumnLabel |
使用列标签代替列名,不同的驱动在这方面会有不同的表现 | true;false | true |
useGeneratedKeys |
允许 JDBC 支持自动生成主键,需要驱动兼容。 如果设置为 true 则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍可正常工作 | true;false | false |
autoMappingBehavior |
指定 MyBatis 应如何自动映射列到字段或属性。 NONE 表示取消自动映射;PARTIAL 只会自动映射没有定义嵌套结果集映射的结果集。 FULL 会自动映射任意复杂的结果集(无论是否嵌套) | NONE; PARTIAL; FULL | PARTIAL |
defaultExecutorType |
配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会执行预处理语句(prepared statements); BATCH 执行器将执行语句并执行批量更新 | SIMPLE; REUSE; BATCH | SIMPLE |
defaultStatementTimeout |
设置超时时间,驱动等待数据库响应的秒数 | 整型 | |
safeRowBoundsEnabled |
允许在嵌套语句中使用分页(RowBounds) | true;false | false |
mapUnderscoreToCamelCase |
是否开启自动驼峰命名规则映射 | true;false | false |
localCacheScope |
MyBatis 利用本地缓存机制防止循环引用和加速重复嵌套查询。 默认值为 SESSION,这种情况下会缓存一个会话中执行的所有查询。 若设置值为 STATEMENT,本地会话仅用在语句执行上,对相同 SqlSession 的不同调用将不会共享数据。 | SESSION;STATEMENT | SESSION |
jdbcTypeForNull |
当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。 | JdbcType 枚举 | OTHER |
lazyLoadTriggerMethods |
指定哪个对象的方法触发一次延迟加载 | 方法列表用逗号隔开 | equals, clone, hashCode, toString |
callSettersOnNulls |
指定当结果集中值为 null 的时候是否调用映射对象的 setter(map 对象时为 put)方法,这对于有 Map.keySet() 依赖或null 值初始化的时候是有用的。注意基本类型(int、boolean等)是不能设置成 null 的。 | true;false | false |
logPrefix |
指定 MyBatis 增加到日志名称的前缀 | String 类型 | |
logImpl |
指定 MyBatis 所用日志的具体实现,未指定时将按顺序自动查找 | SLF4J; LOG4J; LOG4J2; JDK_LOGGING; COMMONS_LOGGING; STDOUT_LOGGING; NO_LOGGING |
|
proxyFactory |
指定 Mybatis 创建具有延迟加载能力的对象所用到的代理工具 | CGLIB;JAVASSIST | JAVASSIST |
environments
id 是唯一标识,主要用于配置数据源。
transactionManager——事务
配置数据库事务,其中type属性有三种配置方式:
- jdbc,采用jdbc的方式管理事务
- managed,采用容器的方式管理事务,在JNDI数据源中使用
- 自定义,自定义数据库事务管理办法。比如 Spring。
dataSource——数据源
配置数据源连接信息,type属性是连接数据库的方式配置,有四种配置方式:
- UNPOOLED,非连接池方式连接
- POOLED,使用连接池连接
- JNDI,使用JNDI数据源
- 自定义数据源
mappers
推荐使用第一种方式,不建议把 java 文件和 xml 文件混在一起。
- 引用 xml 文件
<mappers>
<!-- 直接映射到相应的 mapper 文件 -->
<mapper resource="mapping/UserMapper.xml" />
</mappers>
- 引用 Mapper 接口,需要和 xml 文件放在同一目录下
<mappers>
<!-- 通过类扫描 mapper 文件 -->
<mapper class="org.example.mybatis.mapper.UserMapper" />
</mappers>
- 引用一个包下所有的 Mapper 接口,需要和 xml 文件放在同一目录下
<mappers>
<!-- 扫描包下所有的 mapper 文件 -->
<package name="org.example.mybatis.mapper"/>
</mappers>
- 使用 xml 文件的全路径引用,不推荐。

浙公网安备 33010602011771号