mybatis 批量彩38平臺租用搭建詳解
阿新 • • 發佈:2018-07-12
mys 性能 update語句 批量 字段 close param 性能比較 通過 1 更新單條記錄 彩38平臺租用搭建(企 娥:217 1793 408)
<foreach collection="list" item="item" index="index" open="" close="" separator=";">
update course
<set>
name=${item.name}
</set>
where id = ${item.id}
</foreach>
</update>
一條記錄update一次,性能比較差,容易造成阻塞。
UPDATE course SET name = ‘course1‘ WHEREid = ‘id1‘;
2 更新多條記錄的同一個字段為同一個值
UPDATE course SET name=‘course1‘ WHERE id in(‘id1‘,‘id2‘,‘id3);
3 更新多條記錄為多個字段為不同的值
比較普通的寫法,是通過循環,依次執行update語句。
Mybatis寫法如下:
<update id="updateBatch" parameterType="java.util.List">
update course
<set>
name=${item.name}
</set>
where id = ${item.id}
</foreach>
</update>
一條記錄update一次,性能比較差,容易造成阻塞。
MySQL沒有提供直接的方法來實現批量更新,但可以使用case when語法來實現這個功能。
UPDATE course
SET name = CASE id
WHEN 1 THEN ‘name1‘
WHEN 2 THEN ‘name2‘
WHEN 3 THEN ‘name3‘
END,
title = CASE id
WHEN 1 THEN ‘New Title 1‘
WHEN 2 THEN ‘New Title 2‘
WHEN 3 THEN ‘New Title 3‘
END
WHERE id IN (1,2,3)
這條sql的意思是,如果id為1,則name的值為name1,title的值為New Title1;依此類推。
mybatis 批量彩38平臺租用搭建詳解