mybatis-plus 实现联合主键批量更新
时间: 2023-07-11 13:19:54 浏览: 1583
在 MyBatis-Plus 中,我们可以通过注解来实现联合主键批量更新,具体实现如下:
1. 定义联合主键实体类,使用 `@TableId` 注解来标识联合主键:
```java
@Data
@TableName("user_role")
public class UserRole implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "user_id")
private Long userId;
@TableId(value = "role_id")
private Long roleId;
private String remark;
}
```
2. 定义批量更新 Mapper 接口,使用 `@Param` 注解传递参数:
```java
public interface UserRoleMapper extends BaseMapper<UserRole> {
int batchUpdate(@Param("list") List<UserRole> list);
}
```
3. 在 XML 配置文件中编写 SQL 语句,使用 `foreach` 标签来批量更新:
```xml
<update id="batchUpdate" parameterType="java.util.List">
<foreach collection="list" item="item" separator=";">
update user_role set remark = #{item.remark}
where user_id = #{item.userId} and role_id = #{item.roleId}
</foreach>
</update>
```
4. 调用批量更新方法即可:
```java
List<UserRole> list = new ArrayList<>();
// 添加需要更新的数据到 list 中
int result = userRoleMapper.batchUpdate(list);
```
注意:在批量更新时,需要保证联合主键的值不能重复,否则会更新失败。
阅读全文