mybatis批量增加(oracle,mysql)
来源:互联网 发布:d3 js 流程图 编辑:程序博客网 时间:2024/06/01 08:12
最近工作中有批量导入需求,最开始用循环单条插入(因为当时限制最多30条,效率感觉没什么影响),后来用户提议能不能一次100条,为了提高程序效率就想到了用mybatis的批量插入。
主键采用序列增长,数据库是oracle,代码如下:
<!-- 批量插入 -->
<insert id=
"inserts"
parameterType=
"java.util.List"
>
<!-- 在此处做了修改 -->
insert into PRESON
select SEQ_PRESON_ID.NEXTVAL,A.* from(
<foreach collection=
"list"
item=
"item"
index=
"index"
separator=
"UNION"
>
SELECT
#{item.presonName},
#{item.presonTel},
#{item.presonEmail},
#{item.presonAge}
from dual
</foreach>
) A
</insert>
执行后控制台打印出来的SQL是(两条记录的SQL):
insert into PRESON
select SEQ_PRESON_ID.NEXTVAL,A.* from (
SELECT ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? from dual
UNION SELECT ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? from dual )A
注:union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。
因此如果有要求重复记录不被合并时,需要将foreach标签的separator属性的值改为union all。
数据库是mysql,代码如下 :
<insert id="insertBatch" parameterType="ArrayList">
insert intoPRESON
values
<foreach collection="list"item="obj" index="index"separator="," >
(#{item.presonName},
#{item.presonTel},
#{item.presonEmail},
#{item.presonAge})
- mybatis批量增加(oracle,mysql)
- Mysql和Oracle 用Mybatis批量增加,删除,更新
- Mybatis的批量插入(oracle、MySQL)
- Mybatis批量增加,删除,更新Oracle
- Mybatis批量增加,删除,更新Oracle
- Mybatis批量增加,删除,更新Oracle
- Mybatis批量增加,删除,更新Oracle
- Mybatis批量增加,删除,更新Oracle
- Mybatis批量增加,删除,更新Oracle
- MyBatis批量插入Oracle、MySQL
- Mybatis 批量增加,批量更新
- Mybatis批量增加
- MyBatis批量增加
- Mybatis操作Oracle、mysql批量插入
- mybatis 批量插入oracle与mysql
- MyBatis中的批量插入、删除(MySql、Oracle)
- oracle和mysql mybatis批量更新
- mybatis之mysql&oracle 批量操作
- android 如何预置APK
- IQueryable 和 IEnumerable
- C++知识点梳理(2)
- Linux命令之mount挂载盘符
- ArrayList和LinkedList区别
- mybatis批量增加(oracle,mysql)
- Android的Handler用法
- quartz集群调度机制调研及源码分析
- Vitamio中文API文档—— VideoView
- C++88个注意点子之11~20
- Android手机在开发调试时logcat不显示输出信息的解决办法
- 关于发送H264 sdp里的
- 【Java】利用单例模式、可变参数优化Java操作Mysql数据库、JDBC代码的写作
- AndroidStudio MAT内存分析