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",将查询合并结果集。
下一篇: 常见编码及转换