MyBatis 三種批量插入方式的對比

2022-06-10 11:48:12 字數 1066 閱讀 2876

反覆執行單條插入語句

xml拼接sql

批處理執行

先說結論:少量插入請使用反覆插入單條資料,方便。數量較多請使用批處理方式。(可以考慮以有需求的插入資料量20條左右為界吧,在我的測試和資料庫環境下耗時都是百毫秒級的,方便最重要)。無論何時都不用xml拼接sql的方式

拼接sql的xmlnewid()是sqlserver生成uuid的函式,與本文內容無關

insert into tb_item values

(newid(),#,#,#,#,#,

#,#,#,#,#,#,

#,#,#,#,#,

#,#

service類

測試類

10條 25條資料插入經多次測試,波動性較大,但基本都在百毫秒級別

方式50條

100條

500條

1000條

批處理159ms

208ms

305ms

432ms

xml拼接sql

208ms

232ms

報錯報錯

反覆單條插入

1013ms

2266ms

8141ms

18861ms

其中 拼接sql方式在插入500條和1000條時報錯(似乎是因為sql語句過長,此條跟資料庫型別有關,未做其他資料庫的測試):com.microsoft.sqlserver.jdbc.sqlserverexception: 傳入的**格式資料流(tds)遠端過程呼叫(rpc)協議流不正確。此 rpc 請求中提供了過多的引數。最多應為 2100

可以發現

因此,在需求插入資料數量不多的情況下肯定用它了。

xml拼接sql是最不推薦的方式,使用時有大段的xml和sql語句要寫,很容易出錯,工作效率很低。更關鍵點是,雖然效率尚可,但是真正需要效率的時候你掛了,要你何用?

map容器的三種插入方式

map容器的三種插入方式 第一種 用insert函式插入pair資料。下面舉例說明 include include include using namespace std int main mapmapstudent mapstudent.insert pair 1,student one maps...

map容器元素的三種插入方式

stl中的map容器是我經常用的,但是因為map跟別的容器不太一樣,每次用的時候對於map中元素的插入方式總是忘卻,故而發篇博文,提醒我也提醒所有人map容器的三種插入方式 第一種 用insert函式插入pair資料。下面舉例說明 include include include using name...

MyBatis 三種批量插入操作對比

每當使用 orm 框架進行資料庫操作的時候,就會遇到批量插入操作,如果不對批量插入操作深入了解的話就會出現各種各樣的問題,比如操作異常,效能低下,繫結變數超過限制,甚至出現資料庫宕機等各種問題。本 chat 主要貢獻內容如下 mybatis 三種執行器介紹 mybatis 三種批量操作介紹 基於 s...