版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012045045/article/details/88669358
<!--批量插入:推荐使用 仅支持mysql-->
<insert id="batchInsert" databaseId="mysql">
insert into employee(name,mail,gender,dept_id)
values
<foreach collection="emps" item="emp" separator="," >
(#{emp.name},#{emp.mail},#{emp.gender},#{emp.department.id})
</foreach>
</insert>
<!--批量插入 需要配置mysql的jdbc.url添加allowMultiQueries=true配合使用 仅支持mysql-->
<insert id="batchInsert2" databaseId="mysql">
<foreach collection="emps" item="emp" separator=";" >
insert into employee(name,mail,gender,dept_id)
values(#{emp.name},#{emp.mail},#{emp.gender},#{emp.department.id})
</foreach>
</insert>
<!--批量插入,仅支持oracle:即需要外面加上begin和end来支持-->
<insert id="batchInsert3" databaseId="oracle">
<foreach collection="emps" item="emp" open="begin" close="end;">
insert into employee(name,mail,gender,dept_id)
values(#{emp.name},#{emp.mail},#{emp.gender},#{emp.department.id});
</foreach>
</insert>
<!--批量插入,仅支持oracle:利用虚表来放list,即添加了一个虚拟中间表-->
<insert id="batchInsert4" databaseId="oracle">
insert into employee(id,name,mail,gender,dept_id)
select emp_sequence.nextval,name,mail,gender,dept_id from(
<foreach collection="emps" item="emp" separator="union">
select #{emp.name} name,#{emp.mail} mail,#{emp.gender} gender,#{emp.department.id} dept_id from dual
</foreach>
)
</insert>