W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
??SqlSessionFactory
??有六個(gè)方法創(chuàng)建 ??SqlSession
??實(shí)例。通常來(lái)說(shuō),當(dāng)你選擇其中一個(gè)方法時(shí),你需要考慮以下幾點(diǎn):
session
??作用域中使用事務(wù)作用域,還是使用自動(dòng)提交(??auto-commit
??)?(對(duì)很多數(shù)據(jù)庫(kù)和/或 ?JDBC ?驅(qū)動(dòng)來(lái)說(shuō),等同于關(guān)閉事務(wù)支持)PreparedStatement
??和/或批量更新語(yǔ)句(包括插入語(yǔ)句和刪除語(yǔ)句)嗎?基于以上需求,有下列已重載的多個(gè) ??openSession()?
? 方法供使用。
SqlSession openSession()
SqlSession openSession(boolean autoCommit)
SqlSession openSession(Connection connection)
SqlSession openSession(TransactionIsolationLevel level)
SqlSession openSession(ExecutorType execType, TransactionIsolationLevel level)
SqlSession openSession(ExecutorType execType)
SqlSession openSession(ExecutorType execType, boolean autoCommit)
SqlSession openSession(ExecutorType execType, Connection connection)
Configuration getConfiguration();
默認(rèn)的 ??openSession()
?? 方法沒(méi)有參數(shù),它會(huì)創(chuàng)建具備如下特性的 ??SqlSession
??:
DataSource
??實(shí)例中獲取 ??Connection
??對(duì)象。相信你已經(jīng)能從方法簽名中知道這些方法的區(qū)別。向 ??autoCommit
??可選參數(shù)傳遞 ??true
??值即可開(kāi)啟自動(dòng)提交功能。若要使用自己的 ??Connection
??實(shí)例,傳遞一個(gè) ??Connection
??實(shí)例給 ??connection
??參數(shù)即可。注意,我們沒(méi)有提供同時(shí)設(shè)置 ??Connection
??和 ??autoCommit
??的方法,這是因?yàn)?nbsp;MyBatis 會(huì)依據(jù)傳入的 ??Connection
??來(lái)決定是否啟用 ??autoCommit
??。對(duì)于事務(wù)隔離級(jí)別,MyBatis 使用了一個(gè) Java 枚舉包裝器來(lái)表示,稱為 ??TransactionIsolationLevel
??,事務(wù)隔離級(jí)別支持 ?JDBC ?的五個(gè)隔離級(jí)別(??NONE
??、??READ_UNCOMMITTED
??、??READ_COMMITTED
??、??REPEATABLE_READ
??和 ??SERIALIZABLE
??),并且與預(yù)期的行為一致。
你可能對(duì) ??ExecutorType
??參數(shù)感到陌生。這個(gè)枚舉類型定義了三個(gè)值:
ExecutorType.SIMPLE
??:該類型的執(zhí)行器沒(méi)有特別的行為。它為每個(gè)語(yǔ)句的執(zhí)行創(chuàng)建一個(gè)新的預(yù)處理語(yǔ)句。ExecutorType.REUSE
??:該類型的執(zhí)行器會(huì)復(fù)用預(yù)處理語(yǔ)句。ExecutorType.BATCH?
?:該類型的執(zhí)行器會(huì)批量執(zhí)行所有更新語(yǔ)句,如果 ??SELECT
??在多個(gè)更新中間執(zhí)行,將在必要時(shí)將多條更新語(yǔ)句分隔開(kāi)來(lái),以方便理解。在 ??SqlSessionFactory
??中還有一個(gè)方法我們沒(méi)有提及,就是 ??getConfiguration()?
?。這個(gè)方法會(huì)返回一個(gè) ??Configuration
??實(shí)例,你可以在運(yùn)行時(shí)使用它來(lái)檢查 MyBatis 的配置。
如果你使用過(guò) MyBatis 的舊版本,可能還記得 ??session
??、事務(wù)和批量操作是相互獨(dú)立的。在新版本中則不是這樣。上述三者都包含在 ??session
??作用域內(nèi)。你不必分別處理事務(wù)或批量操作就能得到想要的全部效果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: