1.Oracle批量操作

我的表结构是

1.1批量插入

1.1.1主键不使用序列

insert into students(sid,sname,ssal,ssex)
select 9,'张三',3000,'男' from dual
union all select 10,'李四',4000,'男' from dual
union all select 11,'小红',5000,'女' from dual

主键直接通过具体值进行指定,如上面的9、10、11。适用于主键id为随机数之类的。在项目中我们有时也会让主键id自增长,这个时候就需要使用到序列了。

1.1.2主键使用序列自增长

我的序列名称:seq_stu

insert into students(sid,sname,ssal,ssex)
select seq_stu.nextval,s.* from
(
select '张三2',4000,'女' from dual
union all select '李四2',5000,'女' from dual
) s

这种方式和上面不使用序列的方式其实类似,先在子查询里面不指定主键那一列,查出来有几条数据(待插入数据),然后将主键和那几条数据组合在一起,相当于select seq_stu.nextval, s.* from s由于s有两条数据,因此序列也会产生两个值。

2.mybatis对Oracle进行批量操作

mybatis对Oracle进行批量操作,其实也就是使用mybatis的动态sql 功能进行拼接。

这里我使用的表是Oracle自带的scott数据库下的emp表的备份,copy_emp表。

2.1批量插入

2.1.1主键不使用序列

 <!--批量插入--><insert id="insertBatch" parameterType="com.caihao.oracledemo1.entity.CopyEmp">INSERT INTO copy_emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)<foreach collection="copyEmpList" item="copyEmp" separator="UNION ALL">SELECT #{copyEmp.empno},#{copyEmp.ename},#{copyEmp.job},#{copyEmp.mgr},#{copyEmp.hiredate},#{copyEmp.sal},#{copyEmp.comm},#{copyEmp.deptno}FROM dual</foreach></insert>

2.1.2主键使用序列

<!--批量插入,使用序列-->
<insert id="insertBatchWithSequence" parameterType="com.caihao.oracledemo1.entity.CopyEmp">INSERT INTO copy_emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)SELECT seq_stu.nextval,s.* FROM(<foreach collection="copyEmpList" item="copyEmp" separator="UNION ALL">
SELECT #{copyEmp.ename},#{copyEmp.job},#{copyEmp.mgr},#{copyEmp.hiredate},#{copyEmp.sal},#{copyEmp.comm},#{copyEmp.deptno}FROM dual</foreach>) s
</insert>

至于更新、删除和查询与mysql差不多,因此没做记录。

oracle+mybatis批量插入数据相关推荐

  1. 批量插入数据库语句java_java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码)...

    java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码) 发布于 2020-7-22| 复制链接 本文通过实例代码给大家分享了MyBatis批量插入数据到Oracle数据库 ...

  2. oracle批量插入报错,[数据库]Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA

    [数据库]Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA 0 2020-08-19 08:00:06 Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA-009 ...

  3. MyBatis 批量插入数据到Oracle

    Oracle批量插入数据写法 INSERT INTO USER (ID, NAME) <foreach collection="list" item="item&q ...

  4. Mybatis 批量插入数据 关于Oracle 批量插入

    问题:用mybaits 批量插入数据到Oracle 数据库的时候, 报错: ORA-00933: SQL 命令未正确结束 / ORA-00933: SQL command not properly e ...

  5. 解决Oracle+Mybatis批量插入报错:SQL 命令未正确结束

    Mybatis批量插入需要foreach元素.foreach元素有以下主要属性: (1)item:集合中每一个元素进行迭代时的别名. (2)index:指定一个名字,用于表示在迭代过程中,每次迭代到的 ...

  6. Mybatis批量插入数据的两种方式

    总体描述 软件开发过程中需要批量插入数据的场景有几种: 从离线文件(excel, csv等)导入大批量数据到系统. 从其它系统定时或者人工同步大批量数据到系统. 程序自身的某些算法执行时会生成大批量数 ...

  7. MyBatis 批量插入数据的 3 种方法

    批量插入功能是我们日常工作中比较常见的业务功能之一,之前我也写过一篇关于<MyBatis Plus 批量数据插入功能,yyds!>的文章,但评论区的反馈不是很好,主要有两个问题:第一,对 ...

  8. c# oracle 事务批量插入数据,[小白求教]c# System.Data.OracleClient 怎么批量插入数据...

    [小白求教]c# System.Data.OracleClient 如何批量插入数据 本帖最后由 qq_16664871 于 2014-10-29 17:00:37 编辑 如题,听说可以用SQL拼接语 ...

  9. 【Oracle】Mybatis 批量插入数据

    目录 循环调用单次插入 方式一 begin end Mapper.xml sql 方式二 insert all into ... Mapper.xml sql 其他方式(未使用Mybatis验证) 循 ...

最新文章

  1. SpringCloudAlibaba:Nacos实现原理详解
  2. 2018 ACM-ICPC Asia Shenyang Regional Contest 题解(9 / 13)【每日亿题2021/2/24】
  3. 模糊集的例子(年轻 年老)
  4. unreal world 皮革_UnRealWorld 进阶游戏教程
  5. OpenGL基于PBR的irradiance辐照度的实例
  6. Flash务实主义(五)——AS3的垃圾回收(转)
  7. 轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
  8. ECMAScript 6学习总结(2)——ECMAScript 6常用方法总结
  9. python_day9 异常处理
  10. “四大设计原则”在排版中的应用
  11. High-Sierra,MacOS10.13,增加IntelHD3000显存的方法
  12. 用PS快速制作水彩效果人物照片
  13. html页眉页脚独立,页眉页脚怎么单独设置
  14. python数据分析-concat合并表,报错InvalidIndexError: Reindexing only valid with uniquely valued Index objects
  15. 分布式存储系统Kudu(一)、核心原理
  16. 2021 Python入门资料汇总
  17. ACM解题的一些技巧和方法
  18. IT168 CIO频道11月28日至12月01日文章精选
  19. Python openjudge 练习025:正常血压
  20. 第三章数字逻辑电路基础

热门文章

  1. pythonocc 读取stl stp iges brep*
  2. jsdelivr使用
  3. 基于Python的大数据分析基础(九)--- 数据分析
  4. (vim)vim命令模式下快捷键保存并退出ZZ
  5. JS统计一个字符串中数字字符的个数。
  6. oracle常用函数小结(三)
  7. 微信开发学习:输入城市+天气接收天气预报,非非非非常好玩
  8. python循环语句格式_Python基础-10循环语句
  9. 看看自己咬自己鼻子的牛人
  10. 【Python养成】常用内置函数 — 2(详解25个内置函数)