mybatis批量插入数据mysql vs oracle

版权声明:本文为博主原创文章,未经博主允许不得转载。 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>

猜你喜欢

转载自blog.csdn.net/u012045045/article/details/88669358