on duplicate key update 批量 用法
时间: 2023-11-09 22:43:55 浏览: 128
可以用于批量更新已经存在的数据,如果数据库中已经存在相同主键的数据,则会将原有数据更新为新的数据。例如,可以通过以下SQL语句实现批量更新操作:
INSERT INTO table_name (key1, key2, key3) VALUES (value1, value2, value3) ON DUPLICATE KEY UPDATE key1=new_value1, key2=new_value2, key3=new_value3;
这里的key1、key2、key3表示表中的主键或唯一索引,value1、value2、value3表示要插入的数据,new_value1、new_value2、new_value3表示要更新成的新数据。
相关问题
mybatis用on duplicate key update批量实现存在更新,不存在插入示例
可以使用MyBatis的批量插入功能,结合ON DUPLICATE KEY UPDATE语句实现存在更新,不存在插入的功能。具体实现方法可以参考以下代码示例:
```
<insert id="batchInsertOrUpdate" parameterType="java.util.List">
insert into table_name (column1, column2, column3)
values
<foreach collection="list" item="item" separator=",">
(#{item.column1}, #{item.column2}, #{item.column3})
</foreach>
on duplicate key update
column1 = values(column1),
column2 = values(column2),
column3 = values(column3)
</insert>
```
其中,list为传入的实体列表,item为实体对象,column1、column2、column3为表中的列名。在执行批量插入时,如果某个实体对象的主键已经存在,则会执行更新操作,否则执行插入操作。
mybaits 批量ON DUPLICATE KEY UPDATE
可以使用 MyBatis 的批量插入功能和 ON DUPLICATE KEY UPDATE 语句结合实现批量更新或插入数据。具体实现方式如下:
1. 在 Mapper.xml 文件中编写 SQL 语句,使用 INSERT INTO ... ON DUPLICATE KEY UPDATE ... 语法实现批量更新或插入数据。
2. 在 Java 代码中调用 MyBatis 的批量插入方法,将需要插入或更新的数据作为参数传入。
以下是一个示例代码:
Mapper.xml 文件中的 SQL 语句:
```
<insert id="batchInsertOrUpdate" parameterType="java.util.List">
INSERT INTO table_name (column1, column2, column3)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.column1}, #{item.column2}, #{item.column3})
</foreach>
ON DUPLICATE KEY UPDATE
column1 = VALUES(column1),
column2 = VALUES(column2),
column3 = VALUES(column3)
</insert>
```
Java 代码中的调用:
```
List<Data> dataList = new ArrayList<>();
// 添加需要插入或更新的数据到 dataList 中
mapper.batchInsertOrUpdate(dataList);
```
阅读全文