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配置。

posted @ 2018-09-18 10:02  bug改了我  阅读(3112)  评论(0编辑  收藏  举报