有理解不到位的欢迎指正
配置 | 描述 | 值 | 默认值 |
---|---|---|---|
cacheEnabled | 二级缓存,全局开启/关闭缓存,如果配置为false,会覆盖各个Mapper文件中的cache配置 | true/false | true |
lazyLoadingEnabled | 主要是级联时使用,全局开启/关闭懒加载,如果配置为true,所有关联对象都会被加载。fetchType配置会覆盖全局配置 | true/false | alse |
aggressiveLazyLoading | 和lazyLoadingEnabled配合使用。lazyLoadingEnabled为true时,aggressiveLazyLoading为true则加载所有懒加载对象,为false则按需加载懒加载对象 | true/false | false (true in ≤3.4.1) |
multipleResultSetsEnabled | 允许/不允许一条SQL返回多个结果集,具体情形请查看附录1 | true/false | true |
useColumnLabel | 使用列索引号代替列名称 | true/false | true |
useGeneratedKeys | 允许JDBC 生成主键。需要可兼容的驱动器。如果配置为true,将强制使用被生成的主键,不兼容的驱动器仍然执行。 | true/false | false |
autoMappingBehavior | 指定如何自动映射到对象的字段、属性。NONE,不映射。PARTIAL,除了内嵌属性其余的进行映射。FULL ,全映射,包含内嵌属性。 | NONE, PARTIAL, FULL | PARTIAL |
autoMappingUnknownColumnBehavior | 当检测到无法匹配的属性时,如何执行。NONE,什么也不做。WARNING,打印警告日志。FAILING,失败抛异常 | NONE, WARNING, FAILING | NONE |
defaultExecutorType | 执行器类型,SIMPLE是普通的执行器;REUSE执行器会重用预处理语句(prepared statements);BATCH执行器将重用语句并执行批量更新,注意事项请查看附录3 | SIMPLE REUSE BATCH | SIMPLE |
defaultStatementTimeout | SQL执行超时时间 | Any positive integer | Not Set |
defaultFetchSize | 设置最大的抓取数量,会被query方法上设置的覆盖 | Any positive integer | Not Set |
safeRowBoundsEnabled | 允许在嵌套语句中使用分页(RowBounds) | true/false | false |
safeResultHandlerEnabled | 允许在嵌套语句中使用分页(ResultHandler) | true/false | true |
mapUnderscoreToCamelCase | 是否开启自动驼峰命名规则 | true/false | false |
localCacheScope | 一级缓存,mybatis利用本地缓存来防止重复查询、加速重复的内嵌查询。默认的作用域是Session,一次回话中的所有查询都会被缓存。当作用域是STATEMENT时,本地缓存仅作用域语句执行上,即便是同一会话的不同的调用,也不会有任何数据会共享 | SESSION/STATEMENT | SESSION |
jdbcTypeForNull | 没有指定jdbcType的参数,其返回值为NULL时,指定 jdbcType。 某些驱动需要指定jdbcType,其他驱动直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER。 | JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER | OTHER |
lazyLoadTriggerMethods | 指定某些方法懒加载 | 方法名组成的列表,方法名之间中逗号分隔 | equals,clone,hashCode,toString |
defaultScriptingLanguage | 指定动态 SQL 生成的默认语言 | 类名或者类的全路径 | org.apache.ibatis.scripting.xmltags.XMLLanguageDriver |
defaultEnumTypeHandler | 执行枚举类的处理方法 | 类名或者类的全路径 | org.apache.ibatis.type.EnumTypeHandler |
callSettersOnNulls | 当结果集中值为 null 的时候是否调用映射对象的 setter(map 对象时为 put)方法,这对于有 Map.keySet() 依赖或 null 值初始化的时候是有用的。注意基本类型(int、boolean等)是不能设置成 null 的 | true/false | false |
returnInstanceForEmptyRow | Mybatis,当结果集为NULL的时候返回null。如果设置为true,Mybatis会返回一个空的实例。内置的集合(collection、association)也会返回空的对象实例(3.4.2+) | true/false | false |
logPrefix | 指定 MyBatis 增加到日志名称的前缀 | 自定义字符串 | Not set |
proxyFactory | 创建懒加载对象时用到的代理工具类 | CGLIB/JAVASSIST | JAVASSIST(3.3+) |
vfsImpl | 指定VFS的实现类 | 自定义类的全路径,用逗号分隔。 | Not set |
useActualParamName | 允许SQL语句中使用mapper接口声明的变量名称,前提是你的项目是用Java编译的,并且在mapper接口的方法上使用@param | true/false | true |
configurationFactory | 自定义生成Configuration的类,返回的Configuration的实例用于加载反序列化对象的懒加载属性,该类必须有static Configuration getConfiguration()方法 | 类名或者类的全路径 | Not set |
附录1 multipleResultSetsEnabled
<resultMap id="adminCashBalance" type="AdminCashBalance">
...
</resultMap>
<resultMap id="adminCashMovement" type="AdminCashMovement">
...
</resultMap>
<resultMap id="adminCashTrx" type="AdminCashTrx">
...
</resultMap>
<select id="findCashItems" parameterType="map" resultMap="adminCashBalance, adminCashMovement, adminCashTrx">
exec RequestActualAdministrativeData #{portfolioId}
</select>
附录2 autoMappingBehavior
主要针对<resultMap>中没有配置<result>情形使用:
设置为NONE,则不会映射,设置为PARTIAL,则feelingComments不会被映射,设置为FULL,则全部映射,这样就无需写<result>了
<resultMap id="FeelingCommentResult" type="Feeling">
<id property="feeling_id" column="feeling_id" />
<!-- <result property="content" column="content" /> -->
<collection property="feelingComments" ofType="FeelingComment">
<id property="feeling_comment_id" column="feeling_comment_id" />
<!-- <result property="commentContent" column="commentContent" /> -->
</collection>
</resultMap>
<select id="selectFeelingComment" parameterType="map" resultMap="FeelingCommentResult">
select * from feeling
left outer join feeling_comment on feeling.feeling_id=feeling_comment.feeling_id
where feeling.id =#{id}
</select>
【转】https://blog.csdn.net/qq_1017097573/article/details/70942800
附录3
- 设为"SIMPLE", 在执行xxxDao.save(xxx)时,就相当于JDBC的stmt.execute(sql);
- 设为"REUSE", 在执行xxxDao.save(xxx)时,相当于JDBC重用一条sql,再通过stmt传入多项参数值,然后执行stmt.executeUpdate()或stmt.executeBatch();
- 设为"BATCH", 在执行xxxDao.save(xxx)时,相当于JDBC语句的 stmt.addBatch(sql),即仅仅是将执行SQL加入到批量计划。
如果执行器设为BATCH,发生主键冲突时,只会在该方法调用结束后、在事务提交前才抛出异常。
因为设为BATCH时,仅仅是将执行SQL加入到批量计划。所以此时不会抛出主键冲突等运行时异常,而只有临近commit前执行stmt.execteBatch()后才会抛出异常。
具体请查看博客:【转】https://blog.csdn.net/liuxiao723846/article/details/52195378
网友评论