參考文章:
最近用到了批量更新操作,網路了一下,具體採用了下面的方式。
目前沒有考慮執行效率。
update warehouse_inventory
when id=# then #
when id=# then #
when id=# then #
when id=# then #
when id=# then now()
id = #
integer checkbatchupdate(@param("list") listlist);
我這裡list設定兩條資料ids【354910763363991553,354910763368185857】,最後轉換後的sql:
2019-08-15 19:04:24 [main] debug c.r.s.w.m.w.checkbatchupdate - ==> parameters: 354910763363991553(long), 100(bigdecimal), 354910763368185857(long), 100(bigdecimal), 354910763363991553(long), 100(bigdecimal), 354910763368185857(long), 100(bigdecimal), 354910763363991553(long), 0.00(bigdecimal), 354910763368185857(long), 0.00(bigdecimal), 354910763363991553(long), 0.00(bigdecimal), 354910763368185857(long), 0.00(bigdecimal), 354910763363991553(long), 354910763368185857(long), 354910763363991553(long), 354910763368185857(long)
2019-08-15 19:04:24 [main] debug c.r.s.w.m.w.checkbatchupdate - <== updates: 2
這裡還用到了on duplicate key update,作用:沒有新增,有則更新。
insert into warehouse_inventory
values
(#,#,
#,#,
#,#,
#,#,
#,#,
now(),
#,#,#)
on duplicate key update frozen_store = (case
when id = # then
frozen_store + #
end),
total_store = (case
when id = # then
total_store + #
end),
update_user = (case
when id = # then
#end),
update_time = (case
when id = # then
now()
end)
Mybatis批量更新
mybatis批量更新 批量操作就不進行贅述了。減少伺服器與資料庫之間的互動。網上有很多關於批量插入還有批量刪除的帖子。但是批量更新卻沒有詳細的解決方案。這裡主要講的是1張table中。根據不同的id值,來update不同的property。資料表 1張。tblsupertitleresult。錯題...
mybatis 批量更新
mybatis批量更新 批量操作就不進行贅述了。減少伺服器與資料庫之間的互動。網上有很多關於批量插入還有批量刪除的帖子。但是批量更新卻沒有詳細的解決方案。這裡主要講的是1張table中。根據不同的id值,來update不同的property。資料表 1張。tblsupertitleresult。錯題...
MyBatis批量更新
批量更新時一條記錄update一次,效能比較差,容易造成阻塞。mysql沒有提供直接的方法來實現批量更新,但可以使用case when語法來實現這個功能。update course set name case id when 1 then name1 when 2 then name2 when 3...