您的位置:首页 > 数据库

使用mybatis进行批量插入操作带序列

2018-01-05 09:43 288 查看
进行批量插入 使用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的速度会快一些
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis 数据库