MyBatis 教程

MyBatis 配置 settings 标签

MyBatis 的 <settings>是一个极其重要的标签调整,我们可以通过这个标签修改 MyBatis 在运行时的行为方式。该标签 DTD 定义如下:

<!ELEMENT settings (setting+)>
<!ELEMENT setting EMPTY>
<!ATTLIST setting
   name CDATA #REQUIRED
   value CDATA #REQUIRED >

其中,<settings> 至少需要一个以上的 <setting> 标签,<setting> 标签用来设置一个 key-value,其中内容为空,只有两个属性,分别如下:

  • name:指定设置项的名称,如:cacheEnabled

  • value:指定设置项的值,如:true 或 false

下面这个表格描述了可以设置的信息:

设置参数描述有效值默认值
cacheEnabled

这个配置使全局的映射器启用或禁用缓存

true | falsetrue
lazyLoadingEnabled

全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。

true | falsetrue

aggressiveLazyLoading 

当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。

true | falsetrue

multipleResultSetsEnabled

允许或不允许多种结果集从一个单独的语句中返回(需要适合的驱动)。

true | falsetrue

useColumnLabel

使用列标签代替列名。不同的驱动在这方便表现不同。参考驱动文档或充分测试两种方法来决定所使用的驱动。

true | falsetrue

useGeneratedKeys

允许 JDBC 支持生成的键。需要适合的驱动。如果设置为 true 则这个设置强制生成的键被使用,尽管一些驱动拒绝兼容但仍然有效(比如 Derby)。

true | falsefalse

autoMappingBehavior

指定 MyBatis 如何自动映射列到字段/属性。PARTIAL 只会自动映射简单,没有嵌套的结果。FULL 会自动映射任意复杂的结果(嵌套的或其他情况)。

NONE, PARTIAL, FULL


PARTIAL

defaultExecutorType

配置默认的执行器。SIMPLE 执行器没有什么特别之处。REUSE 执行器重用预处理语句。BATCH 执行器重用语句和批量更新

SIMPLE, REUSE, BATCH

SIMPLE

defaultStatementTimeout 

设置超时时间,它决定驱动等待一个数据库响应的时间。

Any  positive  integer

Not Set (null)

示例配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 配置MyBatis在运行时的行为方式。如:启用缓存等 -->
    <settings>
        <!-- 配置使全局的映射器启用或禁用缓存,true-启用;false-禁用;默认:true -->
        <setting name="cacheEnabled" value="true" />
        <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。(true|false) 默认:true -->
        <setting name="lazyLoadingEnabled" value="true" />
        <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。(true|false) 默认:true -->
        <setting name="aggressiveLazyLoading" value="true"/>
        <!-- 允许或不允许多种结果集从一个单独 的语句中返回(需要适合的驱动)(true|false)默认:true -->
        <setting name="multipleResultSetsEnabled" value="true"/>
        <!-- 使用列标签代替列名。不同的驱动在这 方便表现不同。 参考驱动文档或充分测试两种方法来决定所使用的驱动。true|false 默认:true -->
        <setting name="useColumnLabel" value="true"/>
        <!-- 允许 JDBC支持生成的键。 需要适合的驱动。 如果设置为true则这个设置强制 生成的键被使用
            ,-尽管一些驱动拒绝兼容但仍然有效(比如Derby)true|false 默认:False -->
        <setting name="useGeneratedKeys" value="false" />
        <!-- 指定 MyBatis如何自动映射列到字段/属性。PARTIAL只NONE,PARTIAL,FULL会自动映射简单
            ,没有嵌套的结果。FULL会自动映射任意复杂的结果(嵌套的或其他情况)。默认:PARTIAL -->
        <setting name="autoMappingBehavior" value="PARTIAL"/>
        <!-- 配置默认的执行器。SIMPLE执行器没有什么特别之处。REUSE执行器重用预处理语句。
            BATCH执行器重用语句和批量更新。默认:SIMPLE -->
        <setting name="defaultExecutorType" value="SIMPLE"/>
        <!-- 设置超时时间, 它决定驱动等待一个数据库响应的时间。
            Any positive integer Not Set (null) -->
        <setting name="defaultStatementTimeout" value="1000"/>
        <!-- 允许在嵌套语句上使用RowBounds。true|false 默认:False -->
        <setting name="safeRowBoundsEnabled" value="false"/>
        <!-- 启用可以自动从数据库中根据列名生成驼峰式的变量名。
            -如:A_COLUMN -> aColumn。true|false 默认:False -->
        <setting name="mapUnderscoreToCamelCase" value="false"/>
        <!-- MyBatis使用本地缓存以防止循环引用和加快重复嵌套查询。
            -默认(SESSION)在会话中执行的所有查询缓存。SESSION|STATEMENT -->
        <setting name="localCacheScope" value="SESSION"/>
    </settings>
    <!-- 忽略其他配置 -->
</configuration>
说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号