有理解不到位的歡迎指正
配置 | 描述 | 值 | 默認值 |
---|---|---|---|
cacheEnabled | 二級緩存,全局開啟/關(guān)閉緩存,如果配置為false,會覆蓋各個Mapper文件中的cache配置 | true/false | true |
lazyLoadingEnabled | 主要是級聯(lián)時使用,全局開啟/關(guān)閉懶加載腥放,如果配置為true,所有關(guān)聯(lián)對象都會被加載议泵。fetchType配置會覆蓋全局配置 | true/false | alse |
aggressiveLazyLoading | 和lazyLoadingEnabled配合使用驮配。lazyLoadingEnabled為true時,aggressiveLazyLoading為true則加載所有懶加載對象同诫,為false則按需加載懶加載對象 | true/false | false (true in ≤3.4.1) |
multipleResultSetsEnabled | 允許/不允許一條SQL返回多個結(jié)果集粤策,具體情形請查看附錄1 | true/false | true |
useColumnLabel | 使用列索引號代替列名稱 | true/false | true |
useGeneratedKeys | 允許JDBC 生成主鍵。需要可兼容的驅(qū)動器误窖。如果配置為true叮盘,將強制使用被生成的主鍵,不兼容的驅(qū)動器仍然執(zhí)行霹俺。 | true/false | false |
autoMappingBehavior | 指定如何自動映射到對象的字段柔吼、屬性。NONE丙唧,不映射愈魏。PARTIAL,除了內(nèi)嵌屬性其余的進行映射想际。FULL 培漏,全映射,包含內(nèi)嵌屬性胡本。 | NONE, PARTIAL, FULL | PARTIAL |
autoMappingUnknownColumnBehavior | 當(dāng)檢測到無法匹配的屬性時牌柄,如何執(zhí)行。NONE侧甫,什么也不做珊佣。WARNING,打印警告日志披粟。FAILING咒锻,失敗拋異常 | NONE, WARNING, FAILING | NONE |
defaultExecutorType | 執(zhí)行器類型,SIMPLE是普通的執(zhí)行器僻爽;REUSE執(zhí)行器會重用預(yù)處理語句(prepared statements)虫碉;BATCH執(zhí)行器將重用語句并執(zhí)行批量更新,注意事項請查看附錄3 | SIMPLE REUSE BATCH | SIMPLE |
defaultStatementTimeout | SQL執(zhí)行超時時間 | Any positive integer | Not Set |
defaultFetchSize | 設(shè)置最大的抓取數(shù)量胸梆,會被query方法上設(shè)置的覆蓋 | Any positive integer | Not Set |
safeRowBoundsEnabled | 允許在嵌套語句中使用分頁(RowBounds) | true/false | false |
safeResultHandlerEnabled | 允許在嵌套語句中使用分頁(ResultHandler) | true/false | true |
mapUnderscoreToCamelCase | 是否開啟自動駝峰命名規(guī)則 | true/false | false |
localCacheScope | 一級緩存敦捧,mybatis利用本地緩存來防止重復(fù)查詢须板、加速重復(fù)的內(nèi)嵌查詢。默認的作用域是Session兢卵,一次回話中的所有查詢都會被緩存习瑰。當(dāng)作用域是STATEMENT時,本地緩存僅作用域語句執(zhí)行上秽荤,即便是同一會話的不同的調(diào)用甜奄,也不會有任何數(shù)據(jù)會共享 | SESSION/STATEMENT | SESSION |
jdbcTypeForNull | 沒有指定jdbcType的參數(shù),其返回值為NULL時窃款,指定 jdbcType课兄。 某些驅(qū)動需要指定jdbcType,其他驅(qū)動直接用一般類型即可晨继,比如 NULL烟阐、VARCHAR 或 OTHER。 | JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER | OTHER |
lazyLoadTriggerMethods | 指定某些方法懶加載 | 方法名組成的列表紊扬,方法名之間中逗號分隔 | equals,clone,hashCode,toString |
defaultScriptingLanguage | 指定動態(tài) SQL 生成的默認語言 | 類名或者類的全路徑 | org.apache.ibatis.scripting.xmltags.XMLLanguageDriver |
defaultEnumTypeHandler | 執(zhí)行枚舉類的處理方法 | 類名或者類的全路徑 | org.apache.ibatis.type.EnumTypeHandler |
callSettersOnNulls | 當(dāng)結(jié)果集中值為 null 的時候是否調(diào)用映射對象的 setter(map 對象時為 put)方法蜒茄,這對于有 Map.keySet() 依賴或 null 值初始化的時候是有用的。注意基本類型(int餐屎、boolean等)是不能設(shè)置成 null 的 | true/false | false |
returnInstanceForEmptyRow | Mybatis檀葛,當(dāng)結(jié)果集為NULL的時候返回null。如果設(shè)置為true腹缩,Mybatis會返回一個空的實例屿聋。內(nèi)置的集合(collection、association)也會返回空的對象實例(3.4.2+) | true/false | false |
logPrefix | 指定 MyBatis 增加到日志名稱的前綴 | 自定義字符串 | Not set |
proxyFactory | 創(chuàng)建懶加載對象時用到的代理工具類 | CGLIB/JAVASSIST | JAVASSIST(3.3+) |
vfsImpl | 指定VFS的實現(xiàn)類 | 自定義類的全路徑庆聘,用逗號分隔胜臊。 | 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>情形使用:
設(shè)置為NONE宴抚,則不會映射勒魔,設(shè)置為PARTIAL,則feelingComments不會被映射菇曲,設(shè)置為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>
【轉(zhuǎn)】https://blog.csdn.net/qq_1017097573/article/details/70942800
附錄3
- 設(shè)為"SIMPLE", 在執(zhí)行xxxDao.save(xxx)時常潮,就相當(dāng)于JDBC的stmt.execute(sql)弟胀;
- 設(shè)為"REUSE", 在執(zhí)行xxxDao.save(xxx)時,相當(dāng)于JDBC重用一條sql,再通過stmt傳入多項參數(shù)值孵户,然后執(zhí)行stmt.executeUpdate()或stmt.executeBatch()萧朝;
- 設(shè)為"BATCH", 在執(zhí)行xxxDao.save(xxx)時,相當(dāng)于JDBC語句的 stmt.addBatch(sql)夏哭,即僅僅是將執(zhí)行SQL加入到批量計劃检柬。
如果執(zhí)行器設(shè)為BATCH,發(fā)生主鍵沖突時竖配,只會在該方法調(diào)用結(jié)束后何址、在事務(wù)提交前才拋出異常。
因為設(shè)為BATCH時进胯,僅僅是將執(zhí)行SQL加入到批量計劃用爪。所以此時不會拋出主鍵沖突等運行時異常,而只有臨近commit前執(zhí)行stmt.execteBatch()后才會拋出異常胁镐。
具體請查看博客:【轉(zhuǎn)】https://blog.csdn.net/liuxiao723846/article/details/52195378