mybaits update 语句批量更新
时间: 2025-07-06 22:50:36 浏览: 9
### MyBatis 批量更新 `update` 语句示例教程
#### 单条记录更新
对于单条记录的更新操作相对简单,通常只需要提供相应的 SQL 和参数即可完成。
#### 多条记录同一字段更新为相同值
当需要更新多条记录中的某个特定字段到相同的值时,可以通过构建单一的 SQL 语句来实现这一目标。这种方式效率较高,因为只需一次数据库交互就能处理所有匹配条件的数据项[^1]。
#### 多条记录不同字段更新为不同值
针对更复杂的情况——即每一条记录的不同字段需被设置成不同的新值,则有两种主要方法:
##### 普通写法
一种常见做法是在 XML 映射文件中定义 `<foreach>` 标签遍历传入的对象列表,并为每一个对象生成独立的 UPDATE 命令。这种方法虽然直观易懂,但由于每次迭代都会发出新的查询请求给数据库服务器,在性能上可能不如其他方案理想[^2]。
```xml
<update id="updateBatch" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" open="" close="" separator=";">
update course
set name=#{item.name}
where id = #{item.id};
</foreach>
</update>
```
##### 使用 CASE WHEN 结构优化批量更新
为了提高性能并减少与数据库之间的通信次数,可以采用更加高效的策略:利用 SQL 中的 `CASE WHEN` 表达式一次性修改多行数据。此方式允许在一个事务内完成全部所需更改,从而显著降低了网络开销和锁竞争的风险[^3]。
```sql
UPDATE table_name SET columnA =
(CASE ID
WHEN value THEN new_value_A1
...
ELSE columnA END),
columnB =
(CASE ID
WHEN value THEN new_value_B1
...
ELSE columnB END);
```
这种技术不仅简化了代码逻辑,而且提高了系统的整体响应速度和服务质量。
阅读全文
相关推荐













