update foreach set
时间: 2023-11-29 14:38:37 浏览: 75
UPDATE 表名称SET
update foreach set 是一个用于批量更新数据的语句。根据提供的引用内容,有几种不同的语法来实现此操作。
第一种语法使用了foreach标签来循环遍历一个列表,并在每次循环中执行update语句。在foreach标签内部,可以使用item、index和collection属性来指定循环操作的对象和索引。例如:
```
<update id="updateThreadreturnList" parameterType="java.util.List">
update tb_thread set isDelete=0 where threadId in (
<foreach collection="list" item="item" index="index" open="" close="" separator=",">
#{item.threadId}
</foreach>
)
</update>
```
第二种语法使用了case-when-then-end语句和trim标签来实现批量更新。在这种情况下,update语句中的set子句使用了一个trim标签来动态生成。在trim标签内部,使用了前缀和后缀覆盖来删除多余的逗号。同时,使用了foreach标签来循环遍历列表,并生成case-when-then-end语句。例如:
```
<update id="updateBatch" parameterType="java.util.List">
update mydata_table
<trim prefix="set" suffixOverrides=",">
<trim prefix="status =case" suffix="end,">
<foreach collection="list" item="item" index="index">
when id=#{item.id} then #{item.status}
</foreach>
</trim>
</trim>
where id in
<foreach collection="list" index="index" item="item" separator="," open="(" close=")">
#{item.id,jdbcType=BIGINT}
</foreach>
</update>
```
需要注意的是,使用这些语法之前,需要在数据库连接字符串中添加 allowMultiQueries=true 参数,以允许执行多个查询语句。
阅读全文