最后settings 我们来单独说一下,因为MyBatis 的一些最关键的配置都在这个标签里面(只讲解一些主要的)。
属性名 | 含义 | 简介 | 有效值 | 默认值 |
cacheEnabled | 是否使用缓存 | 是整个工程中所有映射器配置缓存的 开关,即是一个全局缓存开关 | true/false | true |
lazyLoadingEnabled | 是否开启延迟加载 | 控制全局是否使用延迟加载 (association、collection)。当有 特殊关联关系需要单独配置时,可以使 用fetchType 属性来覆盖此配置 | true/false | false |
aggressiveLazyLoadi ng | 是否需要侵入式延 迟加载 | 开启时,无论调用什么方法加载某个对 象,都会加载该对象的所有属性,关闭 之后只会按需加载 | true/false | false |
defaultExecutorType | 设置默认的执行器 | 有三种执行器:SIMPLE 为普通执行器; REUSE 执行器会重用与处理语句; BATCH 执行器将重用语句并执行批量 更新 | SIMPLE/REUSE/BAT CH | SIMPLE |
lazyLoadTriggerMeth ods | 指定哪个对象的方 法触发一次延迟加 载 | 配置需要触发延迟加载的方法的名字, 该方法就会触发一次延迟加载 | 一个逗号分隔的方 法名称列表 | equals, clone, hashCode, toString |
localCacheScope | MyBatis 利用本地 缓存机制(Local Cache)防止循环引 用(circular references)和加 速重复嵌套查询 | 默认值为SESSION,这种情况下会缓存 一个会话中执行的所有查询。若设置值 为STATEMENT,本地会话仅用在语句执 行上,对相同SqlSession 的不同调用 将不会共享数据 | SESSION/STATEMEN T | SESSION |
logImpl | 日志实现 | 指定MyBatis 所用日志的具体实现,未 指定时将自动查找 | SLF4J、LOG4J、 LOG4J2、 JDK_LOGGING、 COMMONS_LOGGING、 STDOUT_LOGGING、 NO_LOGGING | 无 |
multipleResultSetsE nabled | 是否允许单一语句 返回多结果集 | 即Mapper 配置中一个单一的SQL 配置 是否能返回多个结果集 | true/false | true |
useColumnLabel | 使用列标签代替列 名 | 设置是否使用列标签代替列名 | true/false | true |
useGeneratedKeys | 是否支持JDBC 自 动生成主键 | 设置之后,将会强制使用自动生成主键 的策略 | true/false | false |
autoMappingBehavior | 指定MyBatis 自动映射字段或属性的 方式 | 有三种方式,NONE 时将取消自动映射;PARTIAL 时只会自动映射没有定义结 果集的结果映射;FULL 时会映射任意 复杂的结果集 | NONE/PARTIAL/FULL | PARTIAL |
autoMappingUnknownC olumnBehavior | 设置当自动映射时 发现未知列的动作 | 有三种动作:NONE 时不做任何操作; WARNING 时会输出提醒日志;FAILING 时会抛出SqlSessionException 异常 表示映射失败 | NONE/WARNING/FAI LING | NONE |
defaultStatementTim eout | 设置超时时间 | 该超时时间即数据库驱动连接数据库 时,等待数据库回应的最大秒数 | 任意正整数 | 无 |
defaultFetchSize | 设置驱动的结果集 获取数量 (fetchSize)的提 示值 | 为了防止从数据库查询出来的结果过 多,而导致内存溢出,可以通过设置 fetchSize 参数来控制结果集的数量 | 任意正整数 | 无 |
safeRowBoundsEnable d | 允许在嵌套语句中 使用分页 (RowBound,即行 内嵌套语句) | 如果允许在SQL 的行内嵌套语句中使 用分页,就设置该值为false | true/false | false |
safeResultHandlerEn abled | 允许在嵌套语句中 使用分页 (ResultHandler, 即结果集处理) | 如果允许在SQL 的结果集使用分页,就 设置该值为false | true/false | true |
mapUnderscoreToCame lCase | 是否开启驼峰命名 规则(camel case) 映射 | 表明数据库中的字段名称与工程中 Java 实体类的映射是否采用驼峰命名 规则校验 | true/false | false |
jdbcTypeForNull | JDBC 类型的默认设 置 | 当没有为参数提供特定的JDBC 类型 时,为空值指定JDBC 类型。某些驱动 需要指定列的JDBC 类型,多数情况直 接用一般类型即可,比如NULL、 VARCHAR 或OTHER | 常用NULL、 VARCHAR、OTHER | OTHER |
defaultScriptingLan guage | 动态SQL 默认语言 | 指定动态SQL 生成的默认语言 | 指定动态SQL 生成的默认语言一个类型别名或者 一个类的全路径名 | org.apach e.ibatis. scripting .xmltags. XMLLangua geDriver |
callSettersOnNulls | 是否在控制情况下 调用Set 方法 | 指定当结果集中值为null 时是否调用 映射对象的setter(map 对象时为put) 方法,这对于有Map.keySet()依赖或 null 值初始化时是有用的。注意基本 类型是不能设置成null 的 | true/false | false |
returnInstanceForEm ptyRow | 返回空实体集对象 | 当返回行的所有列都是空时,MyBatis 默认返回null。当开启这个设置时, MyBatis 会返回一个空实例。请注意, 它也适用于嵌套的结果集(从 MyBatis3.4.2 版本开始) | true/false | false |
logPrefix | 日志前缀 | 指定MyBatis 所用日志的具体实现,未 指定时将自动查找 | 任意字符串 | 无 |
vfsImpl | vfs 实现 | 指定vfs 的实现 | 自定义VFS 的实现 的类的全限定名, 以逗号分隔 | 无 |
useActualParamName | 使用方法签名 | 使用方法签名允许使用方法签名中的名称作为语句 参数名称。要使用该特性,工程必须采 用Java8 编译,并且加上-parameters 选项(从MyBatis3.4.1 版本开始) | 自定义VFS 的实现 的类的全限定名, 以逗号分隔 | 无 |
configurationFactor y | 配置工厂 | 指定提供配置示例的类。返回的配置实 例用于加载反序列化的懒加载参数。这 个类必须有一个签名的静态配置 getconfiguration()方法(从 MyBatis3.2.3 版本开始) | 一个类型别名或者 一个类型的全路径 名 | 无 |