settings 设置
settings 属性是mybatis中极为重要的调整测试,会改变mybatis的运行时行为。
在大部分情况下不需要大量配置它,只需要修改一些常用的规则即可,比如自动映射、驼峰命名映射、级联规则、是否启动缓存、执行器(Executor)类型等
一个完整的settings配置如下:
<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="autoMappingBehavior" value="PARTIAL"/>
<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<setting name="defaultStatementTimeout" value="25"/>
<setting name="defaultFetchSize" value="100"/>
<setting name="safeRowBoundsEnabled" value="false"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="localCacheScope" value="SESSION"/>
<setting name="jdbcTypeForNull" value="OTHER"/>
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>
属性详解
cacheEnabled | 是否开启全局缓存,默认值:true |
mapUnderscoreToCamelCase | 是否开启驼峰命名自动映射,A_COLUMN 映射到 Java 属性名 aColumn。默认值为false |
logImpl | 设置日志,value="LOG4J",指定 MyBatis 所用日志的具体实现,未指定时将自动查找 |
logPrefix | 指定 MyBatis 增加到日志名称的前缀。 |
lazyLoadingEnabled | 是否开启懒加载,默认值:false |
aggressiveLazyLoading | 开启时不论调用什么方法加载某个对象,都会加载该对象的所有属性默认值:false |
multipleResultSetsEnabled | mapper配置中一个单个的sql配置是否能返回多个结果集 默认值:true |
useColumnLabel | 是否使用列标签代替列名,默认值:true |
useGeneratedKeys | 强制使用自动生成主键的策略,默认值:false |
autoMappingBehavior | 有三种方式none partial full, none:时将消失自动映射; partial :时只会自动映射没有定义结果集的结果映射; full :时会映射任意复杂的结果集 默认值: partial |
autoMappingUnknownColumnBehavior | 有三种动作none warning failing none:时不做任何操作 warning: 时会输出提醒日志 failing:时会抛出 sqlseesionexception 异常表示映射失败 默认值: none |
defaultExecutorType | 有三种执行器simple reuse batch simple :为普通执行器 reuse:执行器会重用处理语句 batch:执行器将重用语句并执行批量更新 默认值:simple |
defaultStatementTimeout | 数据库驱动链接数据库超时时间,即等待数库回应的最大秒数 默认值: 无 有效值 :任意整数 |
defaultFetchSize | 防止从数据库查询出来的结果太多 而导致内存溢出 ,通过设置fetchSize 参数 来控制结果集的数量 默认值: 无 有效值:任意整数 |
lazyLoadTriggerMethods | 定对象的哪些方法触发一次延迟加载。属性值为用逗号分隔的方法列表。默认值为equals,clone,hashCode,toString; |
proxyFactory | 指定 Mybatis 创建可延迟加载对象所用到的代理工具。默认为Javassist |
jdbcTypeForNull | 当没有为参数指定特定的 JDBC 类型时,空值的默认 JDBC 类型。某些数据库驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER。属性值为jdbc常量,null,varchar,other,默认为other |
其中cacheEnabled、mapUnderscoreToCamelCase、logImpl 常用。