mybatis 中 批量插入 (oracle 、mysql)

1、oracle 分别有两种方法:

第一种:

<insert id="batchInsert" parameterType="java.util.List">
    INSERT INTO t_defect_fault_ratio(id, site, site_id, region, org_id, c_createdate, fault_num,defect_num)
    <foreach collection="list" item="item" index="index" separator="union all">
        SELECT
        #{item.id,jdbcType=VARCHAR},
        #{item.site,jdbcType=VARCHAR},
        #{item.site_id,jdbcType=VARCHAR},
        #{item.region,jdbcType=VARCHAR},
        #{item.org_id,jdbcType=VARCHAR},
        #{item.c_createdate,jdbcType=VARCHAR},
        #{item.fault_num,jdbcType=NUMERIC},
        #{item.defect_num,jdbcType=NUMERIC}
        from dual
    </foreach>
</insert>

第二种 :

<insert id="batchInsert" parameterType="java.util.List">
    INSERT ALL
    <foreach collection="list" item="item" index="index">
        INTO t_defect_fault_ratio (id, site, site_id, region, org_id, c_createdate, fault_num,defect_num) VALUES
        (
        #{item.id,jdbcType=VARCHAR},
        #{item.site,jdbcType=VARCHAR},
        #{item.site_id,jdbcType=VARCHAR},
        #{item.region,jdbcType=VARCHAR},
        #{item.org_id,jdbcType=VARCHAR},
        #{item.c_createdate,jdbcType=VARCHAR},
        #{item.fault_num,jdbcType=NUMERIC},
        #{item.defect_num,jdbcType=NUMERIC}
         )
    </foreach>
    select 1 from dual
</insert>

mysql:

<insert id="batchInsert" parameterType="java.util.List">
    INSERT
    INTO t_defect_fault_ratio(id, site, site_id, region, org_id, c_createdate, fault_num,defect_num)
    VALUES
    <foreach collection="list" item="item" index="index" separator=",">
        (
        #{item.id,jdbcType=VARCHAR},
        #{item.site,jdbcType=VARCHAR},
        #{item.site_id,jdbcType=VARCHAR},
        #{item.region,jdbcType=VARCHAR},
        #{item.org_id,jdbcType=VARCHAR},
        #{item.c_createdate,jdbcType=VARCHAR},
        #{item.fault_num,jdbcType=VARCHAR},
        #{item.defect_num,jdbcType=VARCHAR}
        )
    </foreach>
</insert>

以上代码亲测有效。

猜你喜欢

转载自blog.csdn.net/CHL123456789/article/details/102807489