mybatis oracle批量更新踩过的坑

功能需求:1.批量更新;2.数据库存在则不插入

经过:在网上查了N多方法,也试了很多次,都是不行,最后找到的一个方法,自己修改后可以了,严重怀疑别人的方法其实也可以,应该是我使用navicat连接oracle11g,导致某些关键字不识别。贴代码:

<!-- 1种写法 -->
    <insert id="insertByBatch1"  parameterType="java.util.List" useGeneratedKeys="false">
        insert  all
        <foreach collection="list" item="item" index="index">
            into xxx(id) values(#{item.id})
        </foreach>
        <!-- 必须加下面的查询 -->
        SELECT 1 FROM DUAL
    </insert>
<!-- 第2种写法 -->
    <insert id="insertByBatch2" parameterType="java.util.List" useGeneratedKeys="false">
        insert into xxx(id)
        <foreach collection="list" item="item" index="index" separator="union all">
            ( select #{item} from dual
                WHERE NOT EXISTS(SELECT id FROM xxx WHERE id= #{item.id})
            )
        </foreach>
    </insert>

两种都试过了,没问题的

现在就差测试大批量数据插入了,一次插入上千条是否可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值