MyBatis配置文件(二)--settings配置
settings是MyBatis中最复杂的配置,它能影响MyBatis底层的运行,大部分情况下使用默认值,只需要修改一些常用的规则即可。常用规则有自动映射、驼峰命名映射、级联规则、是否启动缓存、执行器类型等。
所有配置可参考MyBatis官方文档:http://www.mybatis.org/mybatis-3/configuration.html#settings
本文列出重要的几个配置项及意义,并挑几个常用配置加以说明:
1 <!--设置 --> 2 <settings> 3 <!--缓存配置的全局开关:如果这里设置成false,那么即便在映射器中配置开启也无济于事 --> 4 <setting name="cacheEnabled" value="true" /> 5 <!--延时加载的全局开关 --> 6 <setting name="lazyLoadingEnabled" value="false" /> 7 <!-- 是否允许单一语句返回多结果集 --> 8 <setting name="multipleResultSetsEnabled" value="true" /> 9 <!-- 使用列标签代替列名,需要兼容驱动 --> 10 <setting name="useColumnLabel" value="true" /> 11 <!-- 允许JDBC自动生成主键,需要驱动兼容。如果设置为true,则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍能正常工作 --> 12 <setting name="useGeneratedKeys" value="false" /> 13 <!-- 指定MyBatis该如何自动映射列到字段或属性:NONE表示取消自动映射;PARTIAL表示只会自动映射,没有定义嵌套结果集和映射结果集;FULL会自动映射任意复杂的结果集,无论是否嵌套 --> 14 <setting name="autoMappingBehavior" value="PARTIAL" /> 15 <!-- 配置默认的执行器:SIMPLE是普通的执行器;REUSE会重用预处理语句;BATCH会重用语句并执行批量更新 --> 16 <setting name="defaultExecutorType" value="SIMPLE" /> 17 <!--设置超时时间:它决定驱动等待数据库响应的秒数,任何正整数--> 18 <setting name="defaultStatementTimeout" value="25"/> 19 <!--设置数据库驱动程序默认返回的条数限制,此参数可以重新设置,任何正整数 --> 20 <setting name="defaultFetchSize" value="100" /> 21 <!-- 允许在嵌套语句中使用分页(RowBounds) --> 22 <setting name="safeRowBoundsEnabled" value="false" /> 23 <!-- 是否开启自动驼峰命名规则,即从a_example到aExample的映射 --> 24 <setting name="mapUnderscoreToCamelCase" value="true" /> 25 <!-- 本地缓存机制,防止循环引用和加速重复嵌套循环 --> 26 <setting name="localCacheScope" value="SESSION" /> 27 <!-- 当没有为参数提供特定JDBC类型时,为空值指定JDBC类型。某些驱动需要指定列的JDBC类型,多数情况直接用一般类型即可,如NULL/VARCHAR/OTHER --> 28 <setting name="jdbcTypeForNull" value="OTHER" /> 29 <!-- 指定触发延迟加载的方法,如equals/clone/hashCode/toString --> 30 <setting name="lazyLoadTriggerMethods" value="equals" /> 31 </settings>
我目前使用的最有用的配置就是mapUnderscoreToCamelCase这个,我的数据库字段的命名格式是test_example这种,对应的pojo对象中属性的命名是驼峰式,如果这个属性用默认值false,就会发现需要在sql语句中进行转换,如果我的数据库表中有三个字段分别是user_id,user_name,user_age,那我查询所有信息的时候不能这样👇
SELECT * FROM user
而是要将每个字段都转换成驼峰式,像这样👇
SELECT user_id as userId,user_name as userName,user_age as userAge FROM user
想象一下,如果我的表中有十几个字段,那我查询所的时候就需要一个个进行转换,太麻烦了,但是如果把这个配置设置成true,就完全不用这么麻烦了。
其他的目前还没遇到,等遇到了再补充吧,以上就是settings配置。
本文来自博客园,作者:bug改了我,转载请注明原文链接:https://www.cnblogs.com/hellowhy/p/9667327.html