批量更新
1、使用<foreach>
标签结合动态SQL
<update id="updateBatchSimulated" parameterType="java.util.List">
<foreach collection="list" item="item" separator=";">
UPDATE your_table
SET column1 = #{item.column1}, column2 = #{item.column2}
WHERE id = #{item.id}
</foreach>
</update>
一旦某条数据出错,已经执行的不会回滚。
item="item"
:指定了遍历集合时,当前遍历到的元素应该被赋予的别名。在这个例子中,每个元素都将被临时命名为item
,以便在<foreach>
体内引用。separator=";"
:指定了遍历集合时,生成的每个SQL片段之间的分隔符。在这个例子中,使用分号(;
)作为分隔符,因为大多数数据库都使用分号来分隔多个SQL语句。
二、批量删除
<delete id="removeBatchByIds" parameterType="java.util.List">
DELETE FROM logs
WHERE id IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
三、批量插入
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO items (name, value)
VALUES
<foreach collection="list" item="item" index="index" open="(" separator="),(" close=")">
#{item.name}, #{item.value}
</foreach>
</insert>