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
環境標識, 可以做環境隔離,和環境區分. 不同環境設置不同的事務工廠和不同的數據源