Mybatis配置详解
Mytatis 配置详解
-
mybatis.check-config-location : java.lang.Boolean , 默认false
是否执行MyBatis xml配置文件的状态检查, 只是检查状态
-
mybatis.config-location : java.lang.String
mybatis-config.xml文件的位置
-
mybatis.configuration-properties : java.util.Properties
mybatis 配置的扩展属性,配置在这里
mybatis.configuration-properties.ext1=123 mybatis.configuration-properties.ext2=abc
-
mybatis.type-aliases-package : java.lang.String
使用别名的路径 , 针对的是pojo , 也可以是工具类
-
mybatis.type-aliases-super-type : java.lang.Class<?>
指定alias类的父类 .
当没有指定父类时 , 那么
type-aliases-package
下的所有类都会指定别名 .当指定父类后 ,
type-aliases-package
下的指定父类的子类 ,才会加载别名 . -
mybatis.type-handlers-package : java.lang.String
类型转换器的路径包名. 加载类型转换器. javaType 与 JdbcType互转 .
-
mybatis.lazy-initialization : java.lang.Boolean
懒初始化 , mybatis 会为每个mapper 生成一个bean , 那么对于这些bean是否需要延迟初始化. 延迟初始化会有多线程问题 , 慎用 , 默认的false就OK.
true : 启用 , false : 禁用 , 默认false
-
mybatis.executor-type : org.apache.ibatis.session.ExecutorType
指定以何种方式执行
SqlSessionTemplate
. 有三种模式- simple(默认) : 为每个语句的执行创建一个新的预处理语句,单条提交sql .每执行一次update或select,就开启一个Statement对象,用完立刻关闭Statement对象。(可以是Statement或PrepareStatement对象)
- reuse : 执行update或select,以sql作为key查找Statement对象,存在就使用,不存在就创建,用完后,不关闭Statement对象,而是放置于
Map<String, Statement>
内,供下一次使用。(可以是Statement或PrepareStatement对象) - batch : 重复使用已经预处理的语句. 执行update(没有select,JDBC批处理不支持select),将所有sql都添加到批处理中(addBatch()),等待统一执行(executeBatch()),它缓存了多个Statement对象,每个Statement对象都是addBatch()完毕后,等待逐一执行executeBatch()批处理的
-
mybatis.configuration.lazy-loading-enabled: java.lang.Boolean
全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。Mybatis仅支持association关联对象和collection关联集合对象的延迟加载,association指的就是一对一,collection指的就是一对多查询。
true: 启用 , false : 禁用 , 默认禁用
-
mybatis.configuration.aggressive-lazy-loading : java.lang.Boolean
设置延迟加载的所有属性 是 全部加载 , 还是按需加载.
true: 全部加载 , false , 按需加载, 默认false -
mybatis.configuration.lazy-load-trigger-methods : java.util.Set<java.lang.String>
懒加载属性的触发条件, 当执行指定方法时,触发延迟加载 .
默认是:"equals", "clone", "hashCode", "toString"
-
configuration.log-impl: Class<? extends Log>
输出日志的实现类 , 支持 6 种日志模式 . 默认依次使用以下顺序.
tryImplementation(LogFactory::useSlf4jLogging); tryImplementation(LogFactory::useCommonsLogging); tryImplementation(LogFactory::useLog4J2Logging); tryImplementation(LogFactory::useLog4JLogging); tryImplementation(LogFactory::useJdkLogging); tryImplementation(LogFactory::useNoLogging);
-
mybatis.configuration.log-prefix: java.lang.String
指定日志输出的前缀
-
mybatis.configuration.interceptors:java.util.List<org.apache.ibatis.plugin.Interceptor>
拦截器 , 可以对执行sql做自定义处理 . 也可以阻止执行sql .
-
mybatis.configuration.jdbc-type-for-null : org.apache.ibatis.type.JdbcType
当写入 null 值的字段时 , 部分数据库需要指定null的数据类型 . mysql不用设置 . oracle需要设置 .
-
mybatis.configuration.cache-enabled : java.lang.Boolean
是否启用缓存 , 默认
true
(启用缓存) . 这里是一级缓存 . -
mybatis.configuration.caches : java.util.Collection<org.apache.ibatis.cache.Cache>
缓存方案 , 已提供如下缓存方案 . 缓存的装饰器 . 也可以自定义缓存,实现
Cache
接口 .BlockingCache FifoCache LoggingCache LruCache ScheduledCache SerializedCache SoftCache SynchronizedCache TransactionalCache WeakCache
※: 这里配置没有效果 , 需要在mapper.xml文件里配置 .
-
mybatis.configuration.cache-names : java.util.Collection<java.lang.String>
所有缓存的namespace .
※: 这里配置没有效果 . 应该是已经废弃了 -
mybatis.configuration.local-cache-scope : org.apache.ibatis.session.LocalCacheScope
本地缓存的有效范围, 支持
SESSION,STATEMENT
.- SESSION : 一个sqlsession中有效.
- STATEMENT: 针对单独的sql有效. 可以在不同session中
-
mybatis.configuration.auto-mapping-behavior : org.apache.ibatis.session.AutoMappingBehavior
自动匹配属性字段的动作, 支持三种方式:
- NONE : 不自动匹配
- PARTIAL (默认) : 会自动匹配字段 , 但内嵌字段 / 多层级复杂字段属性不匹配
- FULL : 会自动匹配字段 , 内嵌字段 / 多层级复杂字段属性也会匹配 . 但性能不佳 , 从实用角度来说 . 不会有这么复杂的sql查询结果.
-
mybatis.configuration.auto-mapping-unknown-column-behavior : org.apache.ibatis.session.AutoMappingUnknownColumnBehavior
没有匹配的属性字段时,要怎么处理的动作 , 有以下三种方式:
- NONE : 不处理 , 跳过.
- WARNING : 日志打出 警告信息 .
- FAILING : 抛出异常信息 ,
SqlSessionException
-
mybatis.configuration.call-setters-on-nulls : java.lang.Boolean
null , 空值时, 是否调用setter方法 , 默认
false
不调用 . -
mybatis.configuration.environment : org.apache.ibatis.mapping.Environment
环境标识, 可以做环境隔离,和环境区分. 不同环境设置不同的事务工厂和不同的数据源