美文网首页
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