进行批量插入 使用union all,批插带序列插入
<!-- 批插带序列使用了union all -->
<insert id="insertDetailed" parameterType="java.util.List" useGeneratedKeys="false">
insert into Detailed(
id,
DETAILNUMBER,
payeebankname,
payeebanknum,
name,
money,
batchnumber,
enterprisepipeliningnum,
note,
banknumber
)
select seq_detailed.nextval, A.* from(
<foreach collection="list" item="item" index="index"
separator="UNION ALL">
SELECT
#{item.detailnumber, jdbcType=VARCHAR},
#{item.payeebankname, jdbcType=VARCHAR},
#{item.payeebanknum, jdbcType=VARCHAR},
#{item.name, jdbcType=VARCHAR},
#{item.money, jdbcType=VARCHAR},
#{item.batchnumber, jdbcType=VARCHAR},
#{item.enterprisepipeliningnum, jdbcType=VARCHAR},
#{item.note, jdbcType=VARCHAR},
#{item.banknumber, jdbcType=VARCHAR}
from dual
</foreach>
) A
</insert>
不使用 union all,批插不带序列
<!-- 批插不带序列 -->
<!-- <insert id="insertDetailed" parameterType="java.util.List" useGeneratedKeys="false">
INSERT ALL
<foreach item="item" index="index" collection="list">
INTO Detailed
(
DETAILNUMBER,
payeebankname,
payeebanknum,
name,
money,
batchnumber,
enterprisepipeliningnum,
note,
banknumber,
status
) VALUES
(
#{item.detailnumber, jdbcType=VARCHAR},
#{item.payeebankname, jdbcType=VARCHAR},
#{item.payeebanknum, jdbcType=VARCHAR},
#{item.name, jdbcType=VARCHAR},
#{item.money, jdbcType=VARCHAR},
#{item.batchnumber, jdbcType=VARCHAR},
#{item.enterprisepipeliningnum, jdbcType=VARCHAR},
#{item.note, jdbcType=VARCHAR},
#{item.banknumber, jdbcType=VARCHAR},
#{item.status, jdbcType=VARCHAR}
)
</foreach>
SELECT 1 FROM DUAL
</insert> -->
不使用union all的速度会快一些