使用mybatis 实现批量更新或新增 on duplicate key
时间: 2023-11-28 22:49:07 浏览: 169
在使用 MyBatis 实现批量更新或新增 on duplicate key 时,可以采用以下两种方法:
1. 使用 MyBatis 的 foreach 标签实现批量操作
```
<update id="batchInsertOrUpdate" parameterType="java.util.List">
insert into table (id, name, age) values
<foreach collection="list" item="item" separator=",">
(#{item.id}, #{item.name}, #{item.age})
</foreach>
on duplicate key update
name = values(name),
age = values(age)
</update>
```
上述代码中,我们首先使用 foreach 标签遍历 List,然后将每个实体的属性值插入到表中。在最后的 on duplicate key update 子句中,我们指定了当主键冲突时更新哪些字段。
2. 使用 MyBatis-Plus 提供的批量插入或更新方法
MyBatis-Plus 是一个 MyBatis 的增强工具,在实现批量更新或新增 on duplicate key 时也提供了一些便捷的方法,可以简化操作。
```
List<Entity> entityList = new ArrayList<>();
// 添加实体数据到列表中
// 执行批量插入或更新操作
int rows = mybatisPlusMapper.insertOrUpdateBatch(entityList);
```
上述代码中,我们直接调用 MyBatis-Plus 提供的 insertOrUpdateBatch 方法,将实体列表传入即可执行批量插入或更新操作。在该方法内部,MyBatis-Plus 会自动判断数据是否存在,从而实现批量更新或新增 on duplicate key 的效果。
阅读全文