mybatis插入集合,如果存在则修改
时间: 2023-07-28 10:49:56 浏览: 97
可以使用 MyBatis 的动态 SQL 功能来实现插入集合并且存在则修改的操作。具体实现如下:
1. 定义一个 `<foreach>` 标签,将集合中的数据逐一插入到数据库中。
```xml
<insert id="insertBatch" parameterType="java.util.List">
insert into table_name (column1, column2, ...)
values
<foreach collection="list" item="item" separator=",">
(#{item.column1}, #{item.column2}, ...)
on duplicate key update
column1=values(column1),
column2=values(column2),
...
</foreach>
</insert>
```
2. 使用 MySQL 的 `on duplicate key update` 语句来实现存在则修改的操作。
其中,`column1=values(column1)` 表示将数据库中已有的记录的 `column1` 列的值更新为插入语句中的值。
完整的 MyBatis 映射文件示例:
```xml
<mapper namespace="com.example.mapper">
<insert id="insertBatch" parameterType="java.util.List">
insert into table_name (column1, column2, ...)
values
<foreach collection="list" item="item" separator=",">
(#{item.column1}, #{item.column2}, ...)
on duplicate key update
column1=values(column1),
column2=values(column2),
...
</foreach>
</insert>
</mapper>
```
这样,在 Java 代码中调用 `insertBatch` 方法,并传入一个 List 参数,即可实现批量插入集合并且存在则修改的操作。
阅读全文