【PostgreSQL】MyBatis使用List参数批量插入/更新数据

本文介绍了在PostgreSQL中,利用MyBatis进行数据批量插入和更新的三种方法。第一种方法是在遇到冲突时更新,适用于有主键的表;第二种方法是先更新再插入,适合Map或实体类参数;第三种方法通过concat连接where条件进行更新,但不适用于大数据量的表。
摘要由CSDN通过智能技术生成

前两种方法,均可实现数据的批量插入/更新,具体选择哪种需根据具体情况,第三种方法仅用于批量更新数据,介绍如下:

1、先插入数据,遇到冲突时更新:

本方法要求表必须有主键,否则无法判断冲突。举例如下:

insert into xxtable
(col1, col2, col3)
values
<foreach collection="list" index="index" item="i" open="" close="" separator=",">
    (#{i.col1},
    <choose>
        <when test ="i.col2 != null and i.col2 != ''">
                cast(#{i.col2} as numeric), 
        </when>
        <otherwise>null, </otherwise>
    </choose>
    #{i.col3})
</foreach>
on conflict (col1, col2)
do update set
(col1, col2, col3) =
(EXCLUDED.col1, EXCLUDED.col2, EXCLUDED.col3)

注:如果希望主键冲突时不做任何操作,可以使用 on conflict (col1, ......) do nothing

2、先更新数据,无数据时插入:

本方法更适合使用Map或实体类参数,单条更新/插入数据,使用List参数时需另行改造。

wi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值