簡單粗暴,寫乙個更新的方法,迴圈呼叫就是了,但是效率就比較低了。效能較差。
批處理,類似於:
update stu set name='jia' ,score=213 where id =1;
update stu set name='jia2' ,score=456 where id =2;
update stu set name='jia3',score=222 where id =3
xml檔案這樣寫
update stu
name=#,score=#
where id =#
列印的sql像這樣
==> preparing: update stu set name=?,score=? where id =? ; update stu set name=?,score=? where id =? ; update stu set name=?,score=? where id =?
==> parameters: jias1(string), 123(integer), 1(integer), jias2(string), 123(integer), 2(integer), jias3(string), 123(integer), 3(integer)
<== updates: 1
但mybatis對映檔案中的sql語句預設是不支援以" ; " 結尾的,也就是不支援多條sql語句的執行。所以需要在連線mysql的url上加 &allowmultiqueries=true 這個才可以執行。
mysql沒有提供批量更新的方式,但是可以通過一些技巧實現,例如
update stu set
name = case id
when 1 then 'jiajia'
when 2 then 'wanghusai'
when 3 then 'wangha'
end,
score = case id
when 1 then 12.3
when 2 then 52.2
when 3 then 33.2
endwhere id in (1,2,3)
xml配置檔案可以這樣實現
update stu
set name=
when # then #
,score=
when # then #
where id in
#
列印的sql語句就是這樣:
==> preparing: update stu set name= case id when ? then ? when ? then ? when ? then ? end ,score= case id when ? then ? when ? then ? when ? then ? end where id in ( ? , ? , ? )
==> parameters: 1(integer), jias1(string), 2(integer), jias2(string), 3(integer), jias3(string), 1(integer), 123(integer), 2(integer), 123(integer), 3(integer), 123(integer), 1(integer), 2(integer), 3(integer)
<== updates: 3
Mybatis批量更新資料
第一種方式 update aa set a b where c in foreach update 但是這種方式修改的字段值都是一樣的。第二種方式 修改資料庫連線配置 allowmultiqueries true 比如 jdbc mysql update test test 1 set where ...
Mybatis批量更新資料
第一種方式 update aa set a b where c in 但是這種方式修改的字段值都是一樣的。第二種方式 修改資料庫連線配置 allowmultiqueries true 比如 jdbc mysql allowmultiqueries true update test test 1 wh...
Mybatis批量更新插入資料
熊大最近發現乙個批量更新時不用迴圈欄位的更新,跟各位撰碼人分享分享。同為碼農深知碼農不易,勿入坑。好了咱們來說正事兒,來看看這條sql update mydata table set status when then where id in 這無非就是根據id批量修改了mydata table這張表...