mybatis原始碼閱讀之9 批量插入資料

2021-09-25 01:12:07 字數 801 閱讀 5208

在做專案的工程中,遇到過各種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...