關於mybatis mysql批量插入的問題

2021-07-24 02:25:17 字數 1356 閱讀 5442

之前在寫專案時,會遇到在某個時間點內需要插入多條資料。之前我採用的方式是一次迴圈插入一條資料,每次插入都是乙個過程。1.發起與資料庫的鏈結 2.插入一條資料。

當你需要批量插入成千上萬條的時候。就會是這個數量級乘以2,相信大部分的時間是浪費在鏈結資料庫上。

批量插入成千上萬條資料,就只需要2個步驟了,鏈結資料量,插入資料,當然插入資料的時候sql的不同寫法,那麼執行的效率也會不同,待會我會舉乙個小栗子。

xml中的寫法

insert into `demo` ( userid, financingid`,smashed, bonusamount)

values

( #, #,#, #)

傳入的引數是乙個list

void adddemolist(listitem);
傳入的是的乙個實體的list,當然也可以是map的list。具體用哪個可以根據實際情況來使用。

上述xml中列印出來的sql會是這樣的

insert into `smasheggrecord` ( userid, financingid,smashed, bonusamount)

values

(#, #, #, #),
(#, #, #, #),
(#, #, #, #),
(#, #, #, #)
沒錯,就是這樣乙個形式。這樣的好處是sql只執行一遍,速度會很快。
如果是
insert into `smasheggrecord` ( userid, financingid,smashed, bonusamount)

values(#, #, #, #);

insert into `smasheggrecord` ( userid, financingid,smashed, bonusamount)

values(#, #, #, #);

.
.
.
insert into `smasheggrecord` ( userid, financingid,smashed, bonusamount)

values(#, #, #, #);

這樣的形式,那麼sql就會執行對應的次數。這也無形的減慢了插入的速度。
另外再插一句和這個無關的,如果前端post過來乙個請求,有2個引數和值全都是一模一樣,那麼後台拿到的會是怎麼樣的呢?
栗子:
引數1:params:123
引數2:params:123
那麼後台將會拿到的是params:123,123
做個小筆記~

Mybatis mysql 儲存Date型別的坑

場景 把乙個時間字串轉成date,存進mysql。時間天數會比實際時間少1天,也可能是小時少了13 14小時 mysql的時區是cst 使用語句 show variables like time zone 查 先放總結 修改方法 1.修改資料庫時區 2.在jdbc.url裡加字尾 servertim...

mybatis mysql返回插入資料主鍵

工作中有這麼個需求 後邊資料依賴前邊插入資料的主鍵,所以需要插入返回主鍵 當然了,還有更好的方法,直接用mybatis配置關聯表,一次插入多個關聯表,但是這樣做的話,各個業務實體間的耦合度就回公升高,不利於擴充套件。最後,回歸到獲取返回主鍵處理,一般insert語句返回值是插入的條數,但是讓插入語句...

mybatis mysql 解決like傳值問題

在專案 基於ssm mysql 中需要使用到like 條件,於是搜尋了下相關的部落格,發現網上各種錯誤真是害死人,什麼concat寫成cancat,什麼標點符號錯誤,以及就一句話的部落格。故在此寫此部落格方便以後閱讀。like網上有3種方案,在此還是都貼出來吧,博主使用的第三種方案。省時高效。方法1...