下面介绍 XML 配置文件中的重要元素(标签)。
configuration 元素是整个 XML 配置文件的根节点,其角色就相当于是 MyBatis 的总管,MyBatis 所有的配置信息都会存放在它里面。
目录
properties标签
properties 标签可以通过 resource 属性指定外部 properties 文件(database.properties),也可以通过 properties 子元素配置。
settings标签
settings 标签用于配置 MyBatis 的运行时行为,它能深刻的影响 MyBatis 的底层运行,一般不需要大量配置,大部分情况下使用其默认值即可。
settings 的配置项很多,但是真正用到的不会太多,我们把常用的配置项研究清楚就可以了。settings 配置项说明如下表所示(表中红色字体的配置项为常用配置项)。
配置项
作用
配置选项
默认值
cacheEnabled
该配置影响所有映射器中配置缓存的全局开关
true|false
true
lazyLoadingEnabled
延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。在特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态
true|false
false
aggressiveLazyLoading
当启用时,对任意延迟属性的调用会使带有延迟加载属性的对象完整加载;反之,每种属性将会按需加载
true|false
版本3.4.1 (不包含)
之前默认值为 true,之后为 falsemultipleResultSetsEnabled
是否允许单一语句返回多结果集(需要兼容驱动)
true|false
true
useColumnLabel
使用列标签代替列名。不同的驱动会有不同的表现,具体可参考相关驱动文档或通过测试这两种不同的模式来观察所用驱动的结果
true|false
true
useGeneratedKeys
允许JDBC 支持自动生成主键,需要驱动兼容。如果设置为 true,则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍可正常工作(比如 Derby)
true|false
false
autoMappingBehavior
指定 MyBatis 应如何自动映射列到字段或属性。
NONE 表示取消自动映射。PARTIAL 表示只会自动映射,没有定义嵌套结果集和映射结果集。FULL 会自动映射任意复杂的结果集(无论是否嵌套)NONE、PARTIAL、FULL
PARTIAL
autoMappingUnkno wnColumnBehavior
指定自动映射当中未知列(或未知属性类型)时的行为。 默认是不处理,只有当日志级别达到 WARN 级别或者以下,才会显示相关日志,如果处理失败会抛出 SqlSessionException 异常
NONE、WARNING、FAILING
NONE
defaultExecutorType
配置默认的执行器。SIMPLE 是普通的执行器;REUSE 会重用预处理语句(prepared statements);BATCH 执行器将重用语句并执行批量更新
SIMPLE、REUSE、BATCH
SIMPLE
defaultStatementTimeout
设置超时时间,它决定驱动等待数据库响应的秒数
任何正整数
Not Set (null)
defaultFetchSize
设置数据库驱动程序默认返回的条数限制,此参数可以重新设置
任何正整数
Not Set (null)
safeRowBoundsEnabled
允许在嵌套语句中使用分页(RowBounds)。如果允许,设置 false
true|false
false
safeResultHandlerEnabled
允许在嵌套语句中使用分页(ResultHandler)。如果允许,设置false
true|false
true
mapUnderscoreToCamelCase
是否开启自动驼峰命名规则映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射
true|false
false
localCacheScope
MyBatis 利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速联复嵌套査询。
默认值为 SESSION,这种情况下会缓存一个会话中执行的所有查询。若设置值为 STATEMENT,本地会话仅用在语句执行上,对相同 SqlScssion 的不同调用将不会共享数据SESSION|STATEMENT
SESSION
jdbcTypeForNull
当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER
NULL、VARCHAR、OTHER
OTHER
lazyLoadTriggerMethods
指定哪个对象的方法触发一次延迟加载
—
equals、clone、hashCode、toString
defaultScriptingLanguage
指定动态 SQL 生成的默认语言
—
org.apache.ibatis
.script.ing.xmltags.XMLDynamicLanguageDrivercallSettersOnNulls
指定当结果集中值为 null 时,是否调用映射对象的 setter(map 对象时为 put)方法,这对于 Map.kcySet() 依赖或 null 值初始化时是有用的。注意,基本类型(int、boolean 等)不能设置成 null
true|false
false
logPrefix
指定 MyBatis 增加到日志名称的前缀
任何字符串
Not set
loglmpl
指定 MyBatis 所用日志的具体实现,未指定时将自动査找
SLF4J|LOG4J|LOG4J2|JDK_LOGGING
|COMMONS_LOGGING|ST DOUT_LOGGING|NO_LOGGINGNot set
proxyFactory
指定 MyBatis 创建具有延迟加栽能力的对象所用到的代理工具
CGLIB|JAVASSIST
JAVASSIST (MyBatis 版本为 3.3 及以上的)
vfsImpl
指定 VFS 的实现类
提供 VFS 类的全限定名,如果存在多个,可以使用逗号分隔
Not set
useActualParamName
允许用方法参数中声明的实际名称引用参数。要使用此功能,项目必须被编译为 Java 8 参数的选择。(从版本 3.4.1 开始可以使用)
true|false
true
typeAliases标签
为了不在任何地方都指定类的全限定名,我们可以使用 typeAliases 标签定义一个别名。
typeHandlers标签
typeHandlers 主要将获取的值合理地转化为 Java 类型。在 typeHandler 中,分为 jdbcType 和 javaType,其中 jdbcType 用于定义数据库类型,而 javaType 用于定义 Java 类型,typeHandler 的作用就是承担 jdbcType 和 javaType 之间的相互转换。
MyBatis 支持自定义处理类型,在自定义处理类型时,需要实现 org.apache.ibatis.type.TypeHandler 接口或继承 org.apache.ibatis.type.BaseTypeHandle 类。详细可参考官网:#typeHandlers
environments标签
在 environments 标签中,可以配置 MyBatis 的多套运行环境,将 SQL 映射到多个不同的数据库上。
environment 是 environments 的子标签,用来配置 MyBatis 的一套运行环境,需指定运行环境 ID、事务管理、数据源配置等相关信息。
我们可以通过配置多个 environment 标签来连接多个数据库,需要注意的是必须指定其中一个为默认运行环境(通过default指定)。
environment 标签提供了两个子标签,即 transactionManager 和 dataSource。
transactionManager标签
MyBatis 支持两个事务管理器,即 JDBC 和 MANAGED。
如果使用 JDBC 类型的事务管理器,则应用程序服务器负责事务管理操作,例如提交、回滚等。如果使用 MANAGED 类型的事务管理器,则应用程序服务器负责管理连接生命周期。
dataSource标签
用于配置数据库的连接属性,例如要连接的数据库的驱动程序名称、URL、用户名和密码等。
dataSource 中的 type 属性用于指定数据源类型,有以下 3 种类型。
1)UNPOOLED
UNPOOLED 没有数据库连接池,效率低下。MyBatis 需要打开和关闭每个数据库操作的连接,它有点慢,通常应用于简单的应用程序。
2)POOLED
对于 POOLED 数据源类型,MyBatis 将维护一个数据库连接池。并且对于每个数据库的操作,MyBatis 都会使用连接池中的连接,并在操作完成后将它们返回到池中。减少了创建新连接所需的初始连接和身份验证时间。
3)JNDI
对于 JNDI 的数据源类型,MyBatis 将从 JNDI 数据源中获取连接。
mappers标签
mappers 标签用于指定 MyBatis SQL 映射文件的路径。
mapper 是 mappers 的子标签,mapper 中的 resource 属性用于指定 SQL 映射文件的路径(类资源路径)
开课吧广场-人才学习交流平台