SQL 批量插入、批量更新

oracle: 

    <!-- 批量插入  主键自增-->
    <insert id="insertBatch" parameterType="java.util.List">
        insert into TAB_A (ID, CODE, NAME)
        select SEQ_TAB_A.Nextval, t.* from (
        <foreach collection="list" item="item" index="index" separator="union">
            (select
            #{item.code},#{item.name}
            from dual)
        </foreach>
        ) t
    </insert>
    <!-- 批量更新 -->
    <update id="updateBatch" parameterType="java.util.List">
        <foreach collection="list" index="index" item="item" open="begin" close=";end;" separator=";">
            update TAB_A
            set CODE = #{item.code,jdbcType=VARCHAR},
            NAME = #{item.name,jdbcType=VARCHAR}
            where ID = #{item.id}
        </foreach>
    </update>

mysql:

<!-- 批量插入 主键自增 -->
INSERT INTO TABLE_A (NAME, age) VALUES
< foreach collection = "list" item = "item" INDEX = "index" OPEN = "(" SEPARATOR = "),(" CLOSE = ")" > 
    #{item.name, jdbcType=VARCHAR},
    #{item.age, jdbcType=VARCHAR}
</ foreach >
<!-- 批量更新 方法1 -->
<foreach collection="list" index="index" item="item" open="" close="" separator=";">
      update table_a
      set age = age + 1,
      update_dt = UTC_TIMESTAMP(3),
      name = #{item.name,jdbcType=VARCHAR}
      where id = #{item.id,jdbcType=VARCHAR}
      and sex = #{item.sex,jdbcType=VARCHAR}
 </foreach>


<!-- 批量更新 方法2-->
<update id="updateBatch" parameterType="java.util.List">
   update sys_depart
   set parent_id = CASE id
   <foreach collection="list" item="item" index="index" open="" separator="" close="">
       WHEN #{item.id,jdbcType=VARCHAR} THEN #{item.parentId,jdbcType=VARCHAR}
   </foreach>
   END,
   depart_name = CASE id
   <foreach collection="list" item="item" index="index" open="" separator="" close="">
       WHEN #{item.id,jdbcType=VARCHAR} THEN #{item.departName,jdbcType=VARCHAR}
   </foreach>
   END
   WHERE id in
   <foreach collection="list" item="item" index="index" open="(" separator="," close=")">
       #{item.id,jdbcType=VARCHAR}
   </foreach>
</update>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值