在做專案的工程中,遇到過各種mybatis批量插入資料的需求。在各種水平的架構師提供的框架封裝中,也出現了好幾種對批量處理的不同封裝。
根據我看過的**,大致可以分三種情況。
@autowired
for(entertypedo d:list)
這是一種完全不負責任的做法,資料量大到一定級別時,插入很慢,而且可能導致資料庫連線池資源耗盡,因為每一次呼叫都要獲取資源,在事務尚未提交的時候,資源不會被釋放。
第二種:sql的xml中,傳物件list,用sql標籤foreach迴圈拼接sql
insert into user_manager(
account, tel
) values
(
#, #
)
這個是最常見的寫法,效能上對比上一種方法,有明顯好轉。看起來貌似是批處理,實際上讀過mybatis全域性配置的同學應該知道,預設的配置是executortype.******,他是乙個普通的執行器,並不是採用mybatis提供的真正的批量處理。
@autowired
private sqlsessionfactorybean factorybean;
sqlsessiontemplate sqlsessiontemplate = new sqlsessiontemplate(factorybean.getobject(), executortype.batch);
for (int i = 5; i < 100; i++)
mybatis原始碼閱讀記錄
深入淺出mybatis 技術原理與實戰 楊開振著 大體結構 sqlsessionfactory defaultsqlsessionfactory 構建sqlsession configuration xml檔案的記憶體表達 sqlsession下的四個物件 executor 執行器,用來排程stat...
原始碼閱讀 Glide原始碼閱讀之with方法(一)
前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...
MyBatis原始碼閱讀 解析MyBatis執行流程
前言 從demo分析上層流程 sqlsessionfactory sqlsessionfactory 一旦被建立就應該在應用的執行期間一直存在,沒有任何理由對它進行清除或重建。使用 sqlsessionfactory 的最佳實踐是在應用執行期間不要重複建立多次,多次重建 sqlsessionfact...