Mybatis基于Oracle数据库实现批量插入的几种方式

1:MySQL

首先我们说如何基于MySQL实现批量插入:

    <insert id="insertBatch">
        INSERT INTO LY_TEST (id, name, age )
        VALUES
        <foreach collection ="list" item="user" separator ="," close = ";">
            (#{user.id}, #{user.name}, #{user.age})
        </foreach>
    </insert>

2:Oracle

2.1:第一种

    <insert id="insertBatch">
        INSERT ALL
        <foreach collection="list" item="user" separator=" "
                 close="SELECT * FROM dual" index="index">
            INTO LY_TEST (id, name, age)
            VALUES (#{user.id}, #{user.name}, #{user.age})
        </foreach>
    </insert>

2.2:第二种

    <insert id="insertBatch">
        INSERT INTO LY_TEST (id, name, age )
        <foreach collection ="list" item="user" index="index" separator ="union all">
            (SELECT #{user.id,jdbcType=INTEGER},
             #{user.name,jdbcType=VARCHAR},
             #{user.age,jdbcType=INTEGER}
            from dual)
        </foreach>
    </insert>

2.3:第三种

    <insert id="insertBatch" parameterType="list">
        <foreach collection ="list" item="user" separator =";" open="begin" close = ";end;">
            INSERT INTO LY_TEST (id, name, age ) VALUES (#{user.id}, #{user.name}, #{user.age})
        </foreach>
    </insert>

2.4 :第四种

        INSERT ALL
        <foreach collection="list" item="item" separator="">
            INTO LY_SJS_WDZM_YXLXD_SXLB_ZX_YZ (SXLBID, YZLXID, ZXCLID, ZT, BBH)
            VALUES
            (
            #{item.thingsTypeId, jdbcType=VARCHAR},
            #{item.thingsYzId, jdbcType=VARCHAR},
            #{item.thingsClId, jdbcType=VARCHAR},
            #{item.status, jdbcType=VARCHAR},
            #{item.version, jdbcType=NUMERIC}
            )
        </foreach>
        SELECT 1 FROM DUAL

补充:

批量删除:

     <delete id="xxx" parameterType="list">
        delete from LY_TEST
        where id in
        <foreach collection="list" item="item" open="(" close=")" separator=",">
            #{item}
        </foreach>
     </delete>

批量更新:

 <update id="batchSaveDraft">
        <foreach collection="list" item="item" separator=";" open="begin" close=";end;">
            UPDATE LY_SJS SET SFSC = '2',CZSJ = SYSDATE,
            NETID = #{item.userId},
       
            WHERE SFSC = '3'
            AND ID = #{item.id}
        </foreach>
    </update>

  • 42
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

入夏忆梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值