postgre mybatis 批量新增或更新怎么写
时间: 2023-07-22 07:30:56 浏览: 139
mybatis-generator,一对一,一对多,批量更新插入
5星 · 资源好评率100%
在使用PostgreSQL和MyBatis进行批量新增或更新时,可以使用MyBatis提供的foreach标签和PostgreSQL的INSERT INTO ... ON CONFLICT DO UPDATE语法来实现。
以下是一个示例:
```xml
<insert id="batchInsertOrUpdate" parameterType="java.util.List">
INSERT INTO my_table (id, name, age)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.id}, #{item.name}, #{item.age})
</foreach>
ON CONFLICT (id) DO UPDATE SET
name = excluded.name,
age = excluded.age
</insert>
```
在这个示例中,我们使用foreach标签将List中的对象逐个插入到数据库中。如果id已存在,则执行更新操作。ON CONFLICT DO UPDATE语法中的excluded关键字表示插入的值,因为我们不想插入重复的id,但仍需要更新其他字段的值。因此,我们使用excluded.name和excluded.age来获取要更新的值。
调用该方法时,只需要向其传递一个List对象,其中包含要插入或更新的所有数据即可。
注意:为了避免SQL注入攻击,请确保使用参数化查询来构建SQL语句。
阅读全文