Mybatis批量插入insert的三种实现方式
作者:Jason_520168
本文介绍了在Oracle和MyBatis中进行批量插入的不同方式,包括Oracle的INSERT ALL和SELECT FROM DUAL方法,以及MyBatis的UNION ALL方法,并提醒读者这些是个人经验总结
前言
提示:在orcale和mybatis执行批量插入是不一样的。
方式1
oracle批量插入使用 insert all into table(…) values(…) into table(…) values(…) select 1 from dual;
<insert id="insertListBatch" parameterType="java.util.List" useGeneratedKeys="false">
INSERT ALL
<foreach item="item" index="index" collection="list">
INTO student
(
ID,
name,
age,
sex,
CREATE_TIME
) VALUES
(
#{item.id, jdbcType=NUMERIC},
#{item.name, jdbcType=VARCHAR},
#{item.age, jdbcType=VARCHAR},
#{item.sex, jdbcType=VARCHAR},
#{item.createdTime, jdbcType=NUMERIC}
)
</foreach>
SELECT 1 FROM DUAL
</insert>
方式2
insert into table(…) (select … from dual) union all (select … from dual)
<insert id="insertListBatch" parameterType="java.util.List" useGeneratedKeys="false">
INSERT INTO T_APPLAUD
(
ID,
name,
age,
sex,
CREATE_TIME
)
<foreach item="item" index="index" collection="list" separator="union all">
(
SELECT
#{item.id},
#{item.name},
#{item.age},
#{item.sex},
#{item.createdTime}
FROM DUAL
)
</foreach>
</insert>方式3
mysq如下:
<insert id="insertListBatch" >
insert into student ( id,name,age,sex,createdTime ) values
<foreach collection="list" item="item" index="index" separator=",">
(null,#{item.name},#{item.age},#{item.sex},#{item.createdTime}
</foreach>
</insert>总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
