mybatis批量更新
批量操作就不進行贅述了。減少伺服器與資料庫之間的互動。網上有很多關於批量插入還有批量刪除的帖子。但是批量更新卻沒有詳細的解決方案。
這裡主要講的是1張table中。根據不同的id值,來update不同的property。
資料表:1張。tblsupertitleresult。錯題結果統計。
表結構:
表中每一條資料必須通過兩個欄位來確定:userhhcode+titleid
需要批量更新的字段是:correctdate,result,checkstate。
我用的資料庫是mysql。其他資料庫的sql語句也都大同小異。
sql:
update tblsupertitleresult set result =case
when (userhhcode=2001 and titleid=1)then 90
when (userhhcode=2001 and titleid=2)then 70
end,checkstate = case
when (userhhcode=2001 and titleid=1)then 80
when (userhhcode=2001 andtitleid=2)then 120
endwhere (userhhcode=2001 and titleid=1) or(userhhcode=2001 and titleid=2)
關於這個批量更新的sql語句做乙個簡單的解釋。
要更新userhhcode=2001,titleid=1和userhhcode=2001 ,titleid=2的兩條資料。
當userhhcode=2001,titleid=1時,將result設定為90,checkstate設定為80
當userhhcode=2001,titleid=2時,將result設定為80,checkstate設定為120.
這裡,首先介紹實體類。
public
classwrongtitle and titleid=#) then #
if>
foreach
>
trim
>
<
trim
prefix=" correctdate =case"
suffix="end,"
>
<
foreach
collection="list"
item="i"
index="index"
>
<
iftest="i.correctdate!=null"
>
when (userhhcode=# and titleid=#) then #
if>
foreach
>
trim
>
<
trim
prefix="result =case"
suffix="end,"
>
<
foreach
collection="list"
item="i"
index="index"
>
<
iftest="i.result!=null"
>
when (userhhcode=# and titleid=#) then #
if>
foreach
>
trim
>
trim
>
where
<
foreach
collection="list"
separator="or"
item="i"
index="index"
>
(userhhcode =# andtitleid=#)
foreach
>
update
>
接下來就是dao:
public inte***cedatacenterdao
執行結果截圖:
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...