美文网首页
mybatis和oracle结合实现批量插入

mybatis和oracle结合实现批量插入

作者: 风一样的存在 | 来源:发表于2020-10-30 22:13 被阅读0次

    看见同事写的for循环,内部调用insert方法,强迫症的我硬是把自己的逻辑实现改成batch insert。但是oracle的批量处理和MySQL的不一样,oracle要创建一个自增序列。

    • 使用自增序列
    <insert id="batchInsertAccountInfoUseSeq" parameterType="java.util.List">
            <selectKey resultType="long" keyProperty="id" order="BEFORE"> 
                SELECT ACCOUNT_SEQ.NEXTVAL FROM dual
            </selectKey> 
            INSERT INTO ACCOUNT_INFO(ID, USERNAME,PASSWORD,GENDER, EMAIL,CREATE_DATE)
            SELECT ACCOUNT_SEQ.NEXTVAL, m.* FROM(
            <foreach collection="list" index="index" item="accountInfo"
                separator="union all">
                select
                #{accountInfo.userName},
                #{accountInfo.password},
                #{accountInfo.gender},
                #{accountInfo.email},
                sysdate
                from dual
            </foreach>
            ) m
    </insert>
    
    • 不使用自增序列
    <insert id="batchInsertAccountInfo" parameterType="java.util.List">
     INSERT INTO ACCOUNT_INFO(ID, USERNAME,PASSWORD,GENDER, EMAIL,CREATE_DATE)
     (
     <foreach collection="list" index="" item="accountInfo"
     separator="union all">
     select
     #{accountInfo.id},
     #{accountInfo.userName},
     #{accountInfo.password},
     #{accountInfo.gender},
     #{accountInfo.email},
     #{accountInfo.createDate}
     from dual
     </foreach>
     )
     </insert>
    

    相关文章

      网友评论

          本文标题:mybatis和oracle结合实现批量插入

          本文链接:https://www.haomeiwen.com/subject/ydrjvktx.html