欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mybatis批量插入Oracle数据库

程序员文章站 2022-05-10 19:59:20
...

Mybatis之批量插入Oracle数据库

首先要说明的是,Mybatis批量插入Oracle和mysql是不同的,鄙人亲身经历,使用MySQL的批量插入会报各种错,在查了很多资料,最终使用Pl/sql来批量插入sql语句为:
insert into employee (id,name,age,nameen) (select ‘1’,‘张三’,‘31’,‘zhangsan’ from dual union all select ‘1’,‘张三’,‘31’,‘zhangsan’ from dual union all select ‘1’,‘张三’,‘31’,‘zhangsan’ from dual)
然后就仿照这个去mybatis中编写XML,我这里使用最简明方便的如下:

···
int addCaseOrders(List caseOrderList);
···

 <insert id="addCaseOrders"  parameterType="java.util.List" >
        insert into JT_JC_HOTLINE_CaseOrder (
            dateTime,
            provinceName,
            businessArea,
            content,
            type,
            insertTime
        )
        (
        <foreach collection="list" item="item" index="index" separator="UNION ALL">
            select
            #{item.dateTime,jdbcType=VARCHAR},
            #{item.provinceName,jdbcType=VARCHAR},
            #{item.businessArea,jdbcType=VARCHAR},
            #{item.content,jdbcType=VARCHAR},
            #{item.type,jdbcType=VARCHAR},
            #{item.insertTime,jdbcType=VARCHAR}
            from dual
        </foreach>
        )
    </insert>

这里需要主义的有三点:
1.SQL中没有VALUES;
2.标签中的(selece … from dual);
3.标签中的separator的属性为"UNION ALL",将查询合并结果集。

相关标签: java