Mybatis配置-设置(settings)

 
 

这些是非常重要的调整,它们修改了MyBatis在运行时的行为方式。下表描述了这些设置以及它们的含义和默认值。

Setting Description Valid Values Default
cacheEnabled 全局启用或禁用配置在此配置下的任何mapper中的所有缓存。 true | false true
lazyLoadingEnabled 全局启用或禁用延迟加载。当启用时,所有关联将进行延迟加载。可以通过在特定关联上使用fetchType属性来覆盖此值。 true | false false
aggressiveLazyLoading 当启用时,任何方法调用将加载对象的所有延迟属性。否则,每个属性将按需加载(参见lazyLoadTriggerMethods)。 true | false false (true in ≤3.4.1)
multipleResultSetsEnabled 允许或禁止从单个语句中返回多个结果集(需要兼容的驱动程序)。 true | false true
useColumnLabel 使用列标签而不是列名。不同的驱动程序在这方面的行为可能会有所不同。请参考驱动程序的文档,或者测试两种模式以确定您的驱动程序的行为方式。 true | false true
useGeneratedKeys 允许对生成的键提供JDBC支持。需要一个兼容的驱动程序。如果设置为true,此设置将强制使用生成的键,因为某些驱动程序拒绝兼容性但仍然能正常工作(例如Derby驱动程序)。 true | false False
autoMappingBehavior
 

指定MyBatis是否以及如何自动将列映射到字段/属性。NONE禁用自动映射。PARTIAL只会自动映射未定义内部嵌套结果映射的结果。FULL将自动映射任何复杂性的结果映射(包含嵌套或其他情况)。

  • NONE:禁用自动映射
  • PARTIAL:只自动映射未定义内部嵌套结果映射的结果
  • FULL:自动映射任何复杂性的结果映射(包含嵌套或其他情况)
NONE, PARTIAL, FULL PARTIAL
autoMappingUnknownColumnBehavior
 

当自动映射目标检测到未知列(或未知属性类型)时,指定其行为。

  • NONE:不做任何操作。
  • WARNING:输出警告日志('org.apache.ibatis.session.AutoMappingUnknownColumnBehavior' 的日志级别必须设置为WARN)。
  • FAILING:映射失败(抛出SqlSessionException异常)。

请注意,当autoMappingBehavior设置为FULL时,可能会出现误报。

NONE, WARNING, FAILING NONE
defaultExecutorType
 

配置默认的执行器(Executor)。

  • SIMPLE:执行器不做任何特殊操作。
  • REUSE:执行器重用预编译语句(prepared statements)。
  • BATCH:执行器重用语句并批量更新。

根据需求选择适合的执行器配置。

SIMPLE REUSE BATCH SIMPLE
defaultStatementTimeout 设置驱动程序等待数据库响应的时间,单位为秒。 Any positive integer Not Set (null)
defaultFetchSize 为驱动程序设置一个提示,以控制返回结果的提取大小。这个参数的值可以被查询的设置所覆盖。 Any positive integer Not Set (null)
defaultResultSetType 在每个语句的设置中忽略时,指定滚动策略。(自3.5.2版本起可用) FORWARD_ONLY | SCROLL_SENSITIVE | SCROLL_INSENSITIVE | DEFAULT(same behavior with ‘Not Set’) Not Set (null)
safeRowBoundsEnabled 允许在嵌套语句上使用RowBounds。如果允许,请将其设置为false。 true | false False
safeResultHandlerEnabled 允许在嵌套语句上使用ResultHandler。如果允许,请将其设置为false。 true | false True
mapUnderscoreToCamelCase 启用从经典数据库列名A_COLUMN到驼峰式经典Java属性名aColumn的自动映射。 true | false False
localCacheScope MyBatis使用本地缓存来防止循环引用并加快重复嵌套查询的速度。默认情况下(SESSION),在一个会话期间执行的所有查询都会被缓存起来。如果设置localCacheScope为STATEMENT,则本地会话仅用于语句执行,同一个SqlSession的两次不同调用之间的数据不会被共享。 SESSION | STATEMENT SESSION
jdbcTypeForNull 在未为参数指定特定的JDBC类型时,指定null值的JDBC类型。有些驱动程序需要指定列的JDBC类型,而其他驱动程序可以使用通用的值,如NULL、VARCHAR或OTHER。 JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER OTHER
lazyLoadTriggerMethods 指定哪些对象的方法触发延迟加载。 A method name list separated by commas equals,clone,hashCode,toString
defaultScriptingLanguage 指定默认用于动态SQL生成的语言。 A type alias or fully qualified class name. org.apache.ibatis.scripting.xmltags.XMLLanguageDriver
defaultEnumTypeHandler 指定默认情况下用于枚举类型的TypeHandler。(自3.4.5版本起可用) A type alias or fully qualified class name. org.apache.ibatis.type.EnumTypeHandler
callSettersOnNulls 指定当检索到的值为null时,是调用setter方法还是map的put方法。当您依赖于Map.keySet()或null值初始化时,这很有用。请注意,像int、boolean等原始类型将不会设置为null。 true | false false
returnInstanceForEmptyRow MyBatis默认情况下,在返回的行的所有列都为NULL时,返回null。当启用此设置时,MyBatis将返回一个空实例。请注意,这也适用于嵌套结果(例如集合和关联)。自3.4.2版本起可用。 true | false false
logPrefix 指定MyBatis将添加到日志记录器名称前面的前缀字符串。 Any String Not set
logImpl 指定MyBatis应使用哪个日志实现。如果未设置此选项,则将自动发现日志实现。 SLF4J | LOG4J(deprecated since 3.5.9) | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING Not set
proxyFactory 指定MyBatis将使用的代理工具来创建支持延迟加载的对象。 CGLIB (deprecated since 3.5.10) | JAVASSIST JAVASSIST (MyBatis 3.3 or above)
vfsImpl 指定VFS(虚拟文件系统)的实现。 Fully qualified class names of custom VFS implementation separated by commas. Not set
useActualParamName 允许使用方法签名中声明的实际参数名称来引用语句参数。要使用此功能,您的项目必须在Java 8中使用 -parameters 选项进行编译。 (自3.4.1版本起可用) true | false true
configurationFactory 指定一个提供Configuration实例的类。返回的Configuration实例用于加载反序列化对象的延迟属性。这个类必须有一个方法,签名为static Configuration getConfiguration()。(自3.2.3版本起可用) A type alias or fully qualified class name. Not set
shrinkWhitespacesInSql 从SQL中删除额外的空白字符。请注意,这也会影响SQL中的字面字符串。(自3.5.5版本起可用) true | false false
defaultSqlProviderType 指定一个SQL提供程序类,该类包含提供程序方法(自3.5.6版本起)。当在SQL提供程序注解(例如@SelectProvider)的type(或value)属性被省略时,该类适用于type(或value)属性。 A type alias or fully qualified class name Not set
nullableOnForEach 指定 ​foreach​标签上 ​nullable​属性的默认值。(自3.5.9版本起可用) true | false false
argNameBasedConstructorAutoMapping 在应用构造函数自动映射时,使用参数名称来搜索要映射的列,而不是依赖于列的顺序。(自3.5.10版本起可用) true | false false

一个完全配置的settings元素的示例如下:

<settings>
  <setting name="cacheEnabled" value="true"/>
  <setting name="lazyLoadingEnabled" value="true"/>
  <setting name="aggressiveLazyLoading" 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="safeResultHandlerEnabled" value="true"/>
  <setting name="mapUnderscoreToCamelCase" value="false"/>
  <setting name="localCacheScope" value="SESSION"/>
  <setting name="jdbcTypeForNull" value="OTHER"/>
  <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
  <setting name="defaultScriptingLanguage" value="org.apache.ibatis.scripting.xmltags.XMLLanguageDriver"/>
  <setting name="defaultEnumTypeHandler" value="org.apache.ibatis.type.EnumTypeHandler"/>
  <setting name="callSettersOnNulls" value="false"/>
  <setting name="returnInstanceForEmptyRow" value="false"/>
  <setting name="logPrefix" value="exampleLogPreFix_"/>
  <setting name="logImpl" value="SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING"/>
  <setting name="proxyFactory" value="CGLIB | JAVASSIST"/>
  <setting name="vfsImpl" value="org.mybatis.example.YourselfVfsImpl"/>
  <setting name="useActualParamName" value="true"/>
  <setting name="configurationFactory" value="org.mybatis.example.ConfigurationFactory"/>
</settings>

猜你喜欢

转载自blog.csdn.net/hay23455/article/details/135011854