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