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

环境标识, 可以做环境隔离,和环境区分. 不同环境设置不同的事务工厂和不同的数据源