MyBatis settings属性详解

5 篇文章 0 订阅
4 篇文章 0 订阅

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>

属性详解

  1. cacheEnabled 属性 控制全局映射器配置文件中已配置的任何缓存 默认值为 true;
  2. lazyLoadingEnabled属性 懒加载,当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态 默认值为true
  3. aggressiveLazyLoading 开启时,任一方法的调用都会加载该对象的所有延迟加载属性。 否则,每个延迟加载属性会按需加载(参考 lazyLoadTriggerMethods)。 默认值为false
  4. multipleResultSetsEnabled属性  是否允许单个语句返回多结果集(需要数据库驱动支持)。 默认值为true
  5. useColumnLabel属性  使用列标签代替列名。实际表现依赖于数据库驱动,具体可参考数据库驱动的相关文档,或通过对比测试来观察。默认值为true
  6. useGeneratedKeys属性  允许 JDBC 支持自动生成主键,需要数据库驱动支持。如果设置为 true,将强制使用自动生成主键。尽管一些数据库驱动不支持此特性,但仍可正常工作(如 Derby)。默认值为false
  7. autoMappingBehavior属性  指定 MyBatis 应如何自动映射列到字段或属性。 NONE 表示关闭自动映射;PARTIAL 只会自动映射没有定义嵌套结果映射的字段。 FULL 会自动映射任何复杂的结果集(无论是否嵌套)。有效值为 none,partial,full 默认为partial
  8. autoMappingUnknownColumnBehavior属性  指定发现自动映射目标未知列(或未知属性类型)的行为。有效值为 none,warning,failing,默认值为none
  NONE: 不做任何反应
  WARNING: 输出警告日志('org.apache.ibatis.session.AutoMappingUnknownColumnBehavior' 的日志等级必须设置为 WARN)
  FAILING: 映射失败 (抛出 SqlSessionException)
  1. defaultExecutorType属性  配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(PreparedStatement); BATCH 执行器不仅重用语句还会执行批量更新。有效值为simple,reuse,batch默认值为simple
  2. defaultStatementTimeout 属性  设置超时时间,它决定数据库驱动等待数据库响应的秒数。未设置为null
  3. defaultFetchSize属性  为驱动的结果集获取数量(fetchSize)设置一个建议值。此参数只可以在查询设置中被覆盖。未设置为null
  4. defaultResultSetType属性  指定语句默认的滚动策略。未设置为null
  5. safeRowBoundsEnabled属性  是否允许在嵌套语句中使用分页(RowBounds)。如果允许使用则设置为 false。默认值为false
  6. safeResultHandlerEnabled属性  是否允许在嵌套语句中使用结果处理器(ResultHandler)。如果允许使用则设置为 false。默认值为true
  7. mapUnderscoreToCamelCase属性  是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。默认值为false
  8. localCacheScope属性  MyBatis 利用本地缓存机制(Local Cache)防止循环引用和加速重复的嵌套查询。 默认值为 SESSION,会缓存一个会话中执行的所有查询。 若设置值为 STATEMENT,本地缓存将仅用于执行语句,对相同 SqlSession 的不同查询将不会进行缓存。有效值为session,statement,默认为session
  9. jdbcTypeForNull属性  当没有为参数指定特定的 JDBC 类型时,空值的默认 JDBC 类型。 某些数据库驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER。属性值为jdbc常量,null,varchar,other,默认为other
  10. lazyLoadTriggerMethods属性  指定对象的哪些方法触发一次延迟加载。属性值为用逗号分隔的方法列表。默认值为equals,clone,hashCode,toString;
  11. defaultScriptingLanguage属性  指定动态 SQL 生成使用的默认脚本语言。
  12. defaultEnumTypeHandler属性  指定 Enum 使用的默认 TypeHandler 。
  13. callSettersOnNulls属性  指定当结果集中值为 null 的时候是否调用映射对象的 setter(map 对象时为 put)方法,这在依赖于 Map.keySet() 或 null 值进行初始化时比较有用。注意基本类型(int、boolean 等)是不能设置成 null 的。默认false
  14. returnInstanceForEmptyRow属性  当返回行的所有列都是空时,MyBatis默认返回 null。 当开启这个设置时,MyBatis会返回一个空实例。 请注意,它也适用于嵌套的结果集(如集合或关联)。默认false
  15. logPrefix属性   指定 MyBatis 增加到日志名称的前缀。
  16. logImpl属性  指定 MyBatis 所用日志的具体实现,未指定时将自动查找。
  17. proxyFactory属性  指定 Mybatis 创建可延迟加载对象所用到的代理工具。默认为Javassist
  18. vfsImpl属性  指定 VFS 的实现
  19. useActualParamName属性  允许使用方法签名中的名称作为语句参数名称。 为了使用该特性,你的项目必须采用 Java 8 编译,并且加上 -parameters 选项。默认true
  20. configurationFactory属性  指定一个提供 Configuration 实例的类。 这个被返回的 Configuration 实例用来加载被反序列化对象的延迟加载属性值。 这个类必须包含一个签名为static Configuration getConfiguration() 的方法。
  21. shrinkWhitespacesInSql属性  从SQL中删除多余的空格字符。请注意,这也会影响SQL中的文字字符串。默认为 false
  22. defaultSqlProviderType属性  指定保存提供程序方法的sql提供程序类(从3.5.6开始)。此类应用于sql提供程序注释(例如@SelectProvider)上的type(或value)属性,当这些属性被省略时
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值