1. 程式人生 > 其它 >MyBatis中settings屬性配置詳解

MyBatis中settings屬性配置詳解

MyBatis中settings屬性配置詳解

在 MyBatis 中 settings 是最複雜的配置,它能深刻影響 MyBatis 底層的執行,但是在大部分情況下使用預設值便可以執行,所以在大部分情況下不需要大量配置它,只需要修改一些常用的規則即可,比如自動對映、駝峰命名對映、級聯規則、是否啟動快取、執行器(Executor)型別等。settings 配置項說明,如表 1 所示。

表 1 settings 配置項說明
配置項 作用 配置選項 預設值
cacheEnabled 該配置影響所有對映器中配置快取的全域性開關 true|false true
lazyLoadingEnabled 延遲載入的全域性開關。當開啟時,所有關聯物件都會延遲載入。在特定關聯關係中可通過設定 fetchType 屬性來覆蓋該項的開關狀態 true|false false
aggressiveLazyLoading 當啟用時,對任意延遲屬性的呼叫會使帶有延遲載入屬性的物件完整載入;反之,每種屬性將會按需載入 true|felse 版本3.4.1 (不包含)
之前 true,之後 false
multipleResultSetsEnabled 是否允許單一語句返回多結果集(需要相容驅動) true|false true
useColumnLabel 使用列標籤代替列名。不同的驅動會有不同的表現,具體可參考相關驅動文件或通過測試這兩種不同的模式來觀察所用驅動的結果 true|false true
useGeneratedKeys 允許JDBC 支援自動生成主鍵,需要驅動相容。如果設定為 true,則這個設定強制使用自動生成主鍵,儘管一些驅動不能相容但仍可正常工作(比如 Derby) true|false false
autoMappingBehavior 指定 MyBatis 應如何自動對映列到欄位或屬性。
NONE 表示取消自動對映。
PARTIAL 表示只會自動對映,沒有定義巢狀結果集和對映結果集。
FULL 會自動對映任意複雜的結果集(無論是否巢狀)
NONE、PARTIAL、FULL PARTIAL
autoMappingUnkno wnColumnBehavior 指定自動對映當中未知列(或未知屬性型別)時的行為。 預設是不處理,只有當日志級別達到 WARN 級別或者以下,才會顯示相關日誌,如果處理失敗會丟擲 SqlSessionException 異常 NONE、WARNING、FAILING NONE
defaultExecutorType 配置預設的執行器。SIMPLE 是普通的執行器;REUSE 會重用預處理語句(prepared statements);BATCH 執行器將重用語句並執行批量更新 SIMPLE、REUSE、BATCH SIMPLE
defaultStatementTimeout 設定超時時間,它決定驅動等待資料庫響應的秒數 任何正整數 Not Set (null)
defaultFetchSize 設定資料庫驅動程式預設返回的條數限制,此引數可以重新設定 任何正整數 Not Set (null)
safeRowBoundsEnabled 允許在巢狀語句中使用分頁(RowBounds)。如果允許,設定 false true|false false
safeResultHandlerEnabled 允許在巢狀語句中使用分頁(ResultHandler)。如果允許,設定false true|false true
mapUnderscoreToCamelCase 是否開啟自動駝峰命名規則對映,即從經典資料庫列名 A_COLUMN 到經典 Java 屬性名 aColumn 的類似對映 true|false false
localCacheScope MyBatis 利用本地快取機制(Local Cache)防止迴圈引用(circular references)和加速聯復巢狀査詢。
預設值為 SESSION,這種情況下會快取一個會話中執行的所有查詢。若設定值為 STATEMENT,本地會話僅用在語句執行上,對相同 SqlScssion 的不同調用將不會共享資料
SESSION|STATEMENT SESSION
jdbcTypeForNull 當沒有為引數提供特定的 JDBC 型別時,為空值指定 JDBC 型別。某些驅動需要指定列的 JDBC 型別,多數情況直接用一般型別即可,比如 NULL、VARCHAR 或 OTHER NULL、VARCHAR、OTHER OTHER
lazyLoadTriggerMethods 指定哪個物件的方法觸發一次延遲載入 equals、clone、hashCode、toString
defaultScriptingLanguage 指定動態 SQL 生成的預設語言 org.apache.ibatis
.script.ing.xmltags
.XMLDynamicLanguageDriver
callSettersOnNulls 指定當結果集中值為 null 時,是否呼叫對映物件的 setter(map 物件時為 put)方法,這對於 Map.kcySet() 依賴或 null 值初始化時是有用的。注意,基本型別(int、boolean 等)不能設定成 null true|false false
logPrefix 指定 MyBatis 增加到日誌名稱的字首 任何字串 Not set
loglmpl 指定 MyBatis 所用日誌的具體實現,未指定時將自動査找 SLF4J | LOG4J | LOG4J2 | JDK_LOGGING
| COMMONS_LOGGING
| STDOUT_LOGGING | NO_LOGGING
Not set
proxyFactory 指定 MyBatis 建立具有延遲加栽能力的物件所用到的代理工具 CGLIB|JAVASSIST JAVASSIST (MyBatis 版本為 3.3 及以上的)
vfsImpl 指定 VFS 的實現類 提供 VFS 類的全限定名,如果存在多個,可以使用逗號分隔 Not set
useActualParamName 允許用方法引數中宣告的實際名稱引用引數。要使用此功能,專案必須被編譯為 Java 8 引數的選擇。(從版本 3.4.1 開始可以使用) true|false true

settings 的配置項很多,但是真正用到的不會太多,我們把常用的配置項研究清楚就可以了,比如關於快取的 cacheEnabled,關於級聯的 lazyLoadingEnabled 和 aggressiveLazy Loading,關於自動對映的 autoMappingBehavior 和 mapUnderscoreToCamelCase,關於執行器型別的 defaultExecutorType 等。

REF

http://c.biancheng.net/view/4324.html