凡客陈年现状关键词首页排名优化价格
MyBatis批量更新之CASE WHEN方式详解
一、CASE WHEN批量更新原理
CASE WHEN方式是MyBatis实现批量更新的一种高效方案,其核心思想是通过构建一条包含多个条件分支的SQL语句,实现对不同记录的不同字段值进行一次性更新。
工作原理
- 构建一条UPDATE语句
- 对每个需要更新的字段使用CASE WHEN条件表达式
- 通过WHERE子句限定需要更新的记录范围
- 数据库引擎单次解析执行这条复杂SQL
二、完整实现示例
1. Mapper接口定义
public interface UserMapper {void batchUpdateUsers(@Param("list") List<User> users);
}
2. XML映射文件配置
<update id="batchUpdateUsers" parameterType="java.util.List">UPDATE user_tableSETuser_name = CASE user_id<foreach collection="list" item="item">WHEN #{item.userId} THEN #{item.userName}</foreach>END,user_age = CASE user_id<foreach collection="list" item="item">WHEN #{item.userId} THEN #{item.userAge}</foreach>END,update_time = CASE user_id<foreach collection="list" item="item">WHEN #{item.userId} THEN #{item.updateTime}</foreach