一、Mybatis全局配置文件配置信息
配置名称 | 配置含义 | 配置简介 |
configuration | 包裹所有配置标签 | 整个配置文件的顶级标签 |
properties | 属性 | 该标签可以引入外部配置的属性,也可以自己配置。该配置标签所在的同一个配置文件中的其他配置均可以引用次配置中的属性。 |
setting | 全局配置参数 | 用来配置一些改变运行时行为的信息,例如是否使用缓存机制,是否使用延迟加载,是否使用错误处理机制等。并且可以设置最大并发请求数量、最大并发事务数量,以及是否启用命名空间等。 |
typeAliases | 类型别名 | 用来设置一些别名来代替Java的长类型声明(如java.lang.int变为int),减少配置编码的冗余。 |
typeHandlers | 类型处理器 | 将SQL中返回的数据类库类型转换为相应Java类型的处理器配置。 |
objectFactory | 对象工厂 | 实例化目标类的工厂类配置 |
plugins | 插件 | 可以通过插件修改MyBatis的核心行为,例如对语句执行的某一点进行拦截调用。 |
environments | 环境集合属性对象 | 数据库环境信息的集合,在一个配置文件中,可以有多种数据库环境集合,这样可以使MyBatis将SQL同时映射至多个数据库。 |
environment | 环境子属性对象 | 数据库环境配置的详细配置 |
transactionManager | 事务管理 | 指定MyBatis的事务管理器 |
dataSource | 数据源 | 使用其中的type指定数据源的连接类型 |
mappers | 映射器 | 配置SQL映射文件的位置,告知MyBatis去哪里加载SQL映射配置 |
二、properties配置分析
在Mybatis配置文件中,properties标签中的数据可以供整个配置文件中的其他配置使用。properties标签可以引入一个可动态变换的外部配置,如一个传统的Java配置文件,亦或是一个properties参数文件。对于配置文件中的其他配置,可以通过property子标签的name属性来取得相应的value值。
例如:(该properties标签配置如下,引入了一个db.properties文件)
<properties resource="org/mybatis/example/db.properties">
<property name="username" value="root" />
<property name="password" value="123456" />
</properties>
其中引入一个db.properties文件,该文件配置如下:
driver=com.mysql.jdbc.Driver
jurl=jdbc:mysql://localhost:3306/mydb?characterEncoding=utf-8
username=root
password=123456
三、setting配置参数
属性名 | 含义 | 简介 | 有效值 | 默认值 |
cacheEnabled | 是否使用缓存 | 是整个工程中所有映射器配置缓存的开关,即是一个全局缓存开关 | true | false | true |
lazyLoadingEnable | 是否开启延迟加载 | 控制全局是否使用延迟加载,当有特殊关联关系需要单独配置时,可以使用fetchType属性来覆盖此配置 | true | false | false |
aggressiveLazyLoading | 是否按需加载属性 | 开启时,不论调用什么方法加载某个对象,都会加载该对象的所有属性,关闭之后只会按需加载 | true | false | false |
multipleResultSetsEnabled | 是否允许单一语句返回多结果集 | 即Mapper配置中一个单一的SQL配置是否 能返回多个结果集 | true | false | true |
useColumnLabel | 使用列标签代替列名 | 设置是否使用列标签代替列名 | true | false | true |
useGenerateKeys | 是否支持JDBC自动生成主键 | 设置之后,将会强制使用自动生成主键的策略 | true | false | false |
autoMappingBehavior | 指定MyBatis自动映射字段或属性的方式 | 有三种方式,NONE时将取消自动映射;PARTIAL时只会自动映射没有定义结果集的结果映射;FULL时会映射任意复杂的结果集 | NONE,PARTIAL,FULL | PARTIAL |
autoMappingUnknownColumnBehavior | 设置当自动映射时发现未知列的动作 | 有三种动作,NONE时不做任何操作;WARING时会输出提醒日志;FALING时会抛出SqlSessionException异常表示映射失败 | NONE,WARING,FALING | NONE |
defaultExecutorType | 设置默认的执行器 | 有三种执行器,SIMPLE为普通执行器,REUSE执行器会重用与处理语句;BATCH执行器将重用语句并执行批量更新 | SIMPLE,REUSE,BATCH | SIMPLE |
defaultStatementTimeout | 设置超时时间 | 该超时时间即数据库驱动连接数据库时,等待数据库回应的最大秒数 | 任意正整数 | 无 |
defaultFetchSize | 设置驱动的结果集获取数量(fetchSize)的提示值 | 为了防止从数据库查询出来的结果过多,而导致内存溢出,可以通过设置fetSize参数来控制结果集的数量 | 任意正整数 | 无 |
safeRowBoundsEnable | 允许在嵌套语句中使用分页(RowBound,即行内嵌套语句) | 如果允许在SQL的行内嵌套语句中使用分页,就设置该值为false | true | false | false |
safeResultHandlerEnabled | 允许在嵌套语句中使用分页(ResultHander,即结果集处理) | 如果允许在SQL的结果语句中使用分页,就设置该值为false | true | false | false |
mapUnderscoreToCamelCase | 是否开启驼峰命名规则映射 | 表明数据库中的字段名称与工程中Java实体类的映射是否采用驼峰命名规则校验 | true | false | false |
localCacheScope | MyBatis利用本地缓存机制(Local Cache)防止循环引用(circular reference)和加速重复嵌套查询 | 默认值为SESSION,这种情况下会缓存一个会话中执行的所有查询,若设置值为STATEMENT,本地会话仅用在语句执行行上,对相同SQLSession的不同调用将不会共享数据 | SESSION | STATEMENT | SESSION |
jdbcTypeForNull | JDBC类型的默认设置 | 当没有为参数提供特定的JDBC类型时,为空值指定JDBC类型,多数情况直接用一般类型即可,比如NULL,VARCHAR或OTHER | 常用NULL,VARCHAR,OTHER | OTHER |
lazyLoadTriggerMethods | 指定哪个对象的方法触发一次延迟加载 | 配置需要触发延迟加载的方法的名字,该方法就会触发一次延迟加载 | 一个用逗号分隔的方法名称列表 | equals,clone,hashCode,toString |
defaultScriptingLanguage | 动态SQL默认语言 | 指定动态SQL生成的默认语言 | 一个类型别名或者一个类的全路径名 | org.apache.ibatis. scripting.xmltags. XMLLanguageDriver |
callSettersOnNulls | 是否在空值情况下调用Set方法 | 指定当结果集中值为null是是否调用映射对象的setter方法(map对象是为put),这对于有Map.keySet()依赖或null值初始化时是有用的。注意基本类型(int boolean等)是不能设置成null的 | true | false | false |