[title]settings[/title]
这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。下表描述了设置中各项的意图、默认值等
格式凑合看吧
设置参数 |
描述 |
有效值 |
默认值 |
---|---|---|---|
cacheEnabled |
该配置影响的所有映射器中配置的缓存的全局开关 |
true | false |
true |
lazyLoadingEnabled |
延迟加载的全局开关当开启时,所有关联对象都会延迟加载特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态 |
true | false |
false |
aggressiveLazyLoading |
当启用时对任意延迟属性的调用会使带有延迟加载属性的对象完整加载反之每种属性将会按需加载 |
true | false |
true |
multipleResultSetsEnabled |
是否允许单一语句返回多结果集(需要兼容驱动) |
true | false |
true |
useColumnLabel |
使用列标签代替列名不同的驱动在这方面会有不同的表现具体可参考相关驱动文档或通过测试这两种不同的模式来观察所用驱动的结果 |
true | false |
true |
useGeneratedKeys |
允许 JDBC 支持自动生成主键,需要驱动兼容如果设置为 true 则这个设置强制使用自动生成主键尽管一些驱动不能兼容但仍可正常工作(比如 Derby) |
true | false |
False |
autoMappingBehavior |
指定 MyBatis 应如何自动映射列到字段或属性NONE 表示取消自动映射PARTIAL 只会自动映射没有定义嵌套结果集映射的结果集FULL 会自动映射任意复杂的结果集(无论是否嵌套) |
NONE, PARTIAL, FULL |
PARTIAL |
autoMappingUnknownColumnBehavior |
Specify the behavior when detects an unknown column (or unknown property type) of automatic mapping target.
NONE: Do nothing
WARNING: Output warning log (The log level of 'org.apache.ibatis.session.AutoMappingUnknownColumnBehavior' must be set to WARN)
FAILING: Fail mapping (Throw SqlSessionException) |
NONE, WARNING, FAILING |
NONE |
defaultExecutorType |
配置默认的执行器SIMPLE 就是普通的执行器REUSE 执行器会重用预处理语句(prepared statements)BATCH 执行器将重用语句并执行批量更新。 |
SIMPLE REUSE BATCH |
SIMPLE |
defaultStatementTimeout |
设置超时时间它决定驱动等待数据库响应的秒数。 |
Any positive integer |
Not Set (null) |
defaultFetchSize |
Sets the driver a hint as to control fetching size for return results. This parameter value can be override by a query setting. |
Any positive integer |
Not Set (null) |
safeRowBoundsEnabled |
允许在嵌套语句中使用分页(RowBounds)。 If allow, set the false. |
true | false |
False |
safeResultHandlerEnabled |
允许在嵌套语句中使用分页(ResultHandler)。 If allow, set the false. |
true | false |
True |
mapUnderscoreToCamelCase |
是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射。 |
true | false |
False |
localCacheScope |
MyBatis 利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速重复嵌套查询默认值为 SESSION,这种情况下会缓存一个会话中执行的所有查询若设置值为 STATEMENT,本地会话仅用在语句执行上,对相同 SqlSession 的不同调用将不会共享数据 |
SESSION | STATEMENT |
SESSION |
jdbcTypeForNull |
当没有为参数提供特定的 JDBC 类型时,为空值指定 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.XMLDynamicLanguageDriver |
callSettersOnNulls |
指定当结果集中值为 null 的时候是否调用映射对象的 setter(map 对象时为 put)方法这对于有 Map.keySet() 依赖或 null 值初始化的时候是有用的注意基本类型(int、boolean等)是不能设置成 null 的。 |
true | false |
false |
logPrefix |
指定 MyBatis 增加到日志名称的前缀 |
Any String |
Not set |
logImpl |
指定 MyBatis 所用日志的具体实现,未指定时将自动查找 |
SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING |
Not set |
proxyFactory |
指定 Mybatis 创建具有延迟加载能力的对象所用到的代理工具 |
CGLIB | JAVASSIST |
JAVASSIST (MyBatis 3.3 or above) |
vfsImpl |
Specifies VFS implementations |
Fully qualified class names of custom VFS implementation separated by commas. |
Not set |
useActualParamName |
Allow referencing statement parameters by their actual names declared in the method signature. To use this feature, your project must be compiled in Java 8 with -parameters option. (Since: 3.4.1) |
true | false |
true |
[title]typeHandlers[/title]
无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器。
类型处理器 |
Java 类型 |
JDBC 类型 |
---|---|---|
BooleanTypeHandler |
java.lang.Boolean, boolean |
数据库兼容的 BOOLEAN |
ByteTypeHandler |
java.lang.Byte, byte |
数据库兼容的 NUMERIC 或 BYTE |
ShortTypeHandler |
java.lang.Short, short |
数据库兼容的 NUMERIC 或 SHORT INTEGER |
IntegerTypeHandler |
java.lang.Integer, int |
数据库兼容的 NUMERIC 或 INTEGER |
LongTypeHandler |
java.lang.Long, long |
数据库兼容的 NUMERIC 或 LONG INTEGER |
FloatTypeHandler |
java.lang.Float, float |
数据库兼容的 NUMERIC 或 FLOAT |
DoubleTypeHandler |
java.lang.Double, double |
数据库兼容的 NUMERIC 或 DOUBLE |
BigDecimalTypeHandler |
java.math.BigDecimal |
数据库兼容的 NUMERIC 或 DECIMAL |
StringTypeHandler |
java.lang.String |
CHAR, VARCHAR |
ClobReaderTypeHandler |
java.io.Reader |
- |
ClobTypeHandler |
java.lang.String |
CLOB, LONGVARCHAR |
NStringTypeHandler |
java.lang.String |
NVARCHAR, NCHAR |
NClobTypeHandler |
java.lang.String |
NCLOB |
BlobInputStreamTypeHandler |
java.io.InputStream |
- |
ByteArrayTypeHandler |
byte[] |
数据库兼容的字节流类型 |
BlobTypeHandler |
byte[] |
BLOB, LONGVARBINARY |
DateTypeHandler |
java.util.Date |
TIMESTAMP |
DateOnlyTypeHandler |
java.util.Date |
DATE |
TimeOnlyTypeHandler |
java.util.Date |
TIME |
SqlTimestampTypeHandler |
java.sql.Timestamp |
TIMESTAMP |
SqlDateTypeHandler |
java.sql.Date |
DATE |
SqlTimeTypeHandler |
java.sql.Time |
TIME |
ObjectTypeHandler |
Any |
OTHER 或未指定类型 |
EnumTypeHandler |
Enumeration Type |
VARCHAR-任何兼容的字符串类型,存储枚举的名称(而不是索引) |
EnumOrdinalTypeHandler |
Enumeration Type |
任何兼容的 NUMERIC 或 DOUBLE 类型,存储枚举的索引(而不是名称)。 |
文章评论