oracle批量插入sql

 

第一种方式,批量拼接SQL,最后一次提交,性能很好。

 

<insert id="addBatch" parameterType="java.util.List">
        BEGIN
        <foreach collection="list" item="item" index="index" separator="">
            insert into blacklist
            (id, userid, deviceid, createdate, updatedate, "LEVEL")
            VALUES
            (
            USER_INFO_SEQ.NEXTVAL,#{item.userId,jdbcType=INTEGER},#{item.deviceId,jdbcType=VARCHAR},
            #{item.createDate,jdbcType=DATE},sysdate, #        {item.level,jdbcType=INTEGER} );
        </foreach>
        COMMIT;
        END;
</insert>

 

这个是第二种方式,网络上比较多见,但会产生中间表,性能比较低。

 

<insert id="addBatch"  parameterType="java.util.List">
        INSERT INTO INFO (
        PARTNERSERIALNUM,
        MEMBERTYPE,
        PARTNERMEMBERID,
        REGMOBILE,
        CONTACTSMOBILE,
        "NAME",
        EMAIL
        )
        <foreach collection="list" item="item" index="index" separator="union all" >
            select #{item.partnerSerialNum,jdbcType=VARCHAR}, #{item.memberType,jdbcType=VARCHAR}, #{item.partnerMemberId,jdbcType=VARCHAR}, #{item.regMobile,jdbcType=VARCHAR}, #{item.contactsMobile,jdbcType=VARCHAR}, #{item.name,jdbcType=VARCHAR} 
            } from dual
        </foreach>
    </insert>

 

posted @ 2020-07-23 22:05  星空大大  阅读(2110)  评论(0)    收藏  举报