mybatis 批量插入时判断数据重复,有则跳过,无则添加
时间: 2024-03-09 18:45:47 浏览: 320
在 mybatis 批量插入时,如果需要判断数据是否重复,可以通过以下两种方式实现:
1. 使用 INSERT IGNORE 语句
可以在 SQL 语句中使用 INSERT IGNORE 语句,示例代码如下:
```xml
<insert id="batchInsert" parameterType="java.util.List">
insert ignore into my_table(col1, col2, col3)
values
<foreach collection="list" item="item" separator=",">
(#{item.col1}, #{item.col2}, #{item.col3})
</foreach>
</insert>
```
在这个示例中,使用了 INSERT IGNORE 语句,如果插入的数据已经存在,则会被忽略。
2. 使用 ON DUPLICATE KEY UPDATE 语句
可以在 SQL 语句中使用 ON DUPLICATE KEY UPDATE 语句,示例代码如下:
```xml
<insert id="batchInsert" parameterType="java.util.List">
insert into my_table(col1, col2, col3)
values
<foreach collection="list" item="item" separator=",">
(#{item.col1}, #{item.col2}, #{item.col3})
</foreach>
on duplicate key update
col1 = values(col1),
col2 = values(col2),
col3 = values(col3)
</insert>
```
在这个示例中,使用了 ON DUPLICATE KEY UPDATE 语句,如果插入的数据已经存在,则会更新已存在的数据。这里的关键在于在插入语句中,使用了 values() 函数来获取插入数据的值,这样就可以将更新数据的值设置为插入数据的值,从而达到更新数据的目的。
需要注意的是,使用 ON DUPLICATE KEY UPDATE 语句时,需要在表中设置唯一索引或主键,否则会报错。
阅读全文