mapper.java

    /*** 批量插入或更新* @param stpos* @author fengjia* @date 2022/5/9 19:50*/void mergeInto(List<TbMmOtStpo> stpos);

mapper.xml

        merge into table_name uusing(<foreach collection="list" index="index" item="item" open=""close="" separator="union">SELECT #{item.stlty} as stlty,#{item.stlnr} as stlnr,#{item.stlkn} as stlkn,#{item.stpoz} as stpoz,#{item.datuv} as datuv,#{item.andat} as andat,#{item.aedat} as aedat,#{item.idnrk} as idnrk,#{item.pswrk} as pswrk,#{item.postp} as postp,#{item.posnr} as posnr,#{item.maktx} as maktx,#{item.vornr} as vornr,#{item.stvkn} as stvkn,#{item.plnnr} as plnnr,#{item.plnkn} as plnknFROM dual</foreach>) ton (u.stlty = t.stlty and u.stlnr = t.stlnr and u.stlkn = t.stlkn and u.stpoz = t.stpoz)when matched thenupdate set u.datuv = t.datuv,u.andat = t.andat,u.aedat = t.aedat,u.idnrk = t.idnrk,u.pswrk = t.pswrk,u.postp = t.postp,u.posnr = t.posnr,u.maktx = t.maktx,u.vornr = t.vornr,u.stvkn = t.stvkn,u.plnnr = t.plnnr,u.plnkn = t.plnkn,u.updatedtime = sysdatewhen not matched theninsert (stlty,stlnr,stlkn,stpoz,datuv,andat,aedat,idnrk,pswrk,postp,posnr,maktx,vornr,stvkn,plnnr,plnkn,createdtime) VALUES(t.stlty,t.stlnr,t.stlkn,t.stpoz,t.datuv,t.andat,t.aedat,t.idnrk,t.pswrk,t.postp,t.posnr,t.maktx,t.vornr,t.stvkn,t.plnnr,t.plnkn,sysdate)
  1. merge into 后面跟表名
  2. using 更新数据,可以用union all 或者union 批量拼接数据
  3. on 判断更新还是插入的条件
  4. update 更新语句
  5. insert 插入语句
  • 问题1:更新的数据要通过on后面的条件找到唯一一条需要更新的数据,如果on后面的条件找到多条数据,就会报错,无法判断要更新那条数据。
  • 解决:暂时没有太好的解决方案,确保唯一即可。
  • 问题2:批量删除插入的数据太多时,SQL报错或者JVM 栈溢出
  • 解决:控制插入list的数量
if (mmOtMapls.size()>0) {//为了防止SQL语句超出长度出错,分成几次插入if(mmOtMapls.size() <= 1000){tbMmOtMaplService.mergeInto(mmOtMapls);}else{int times = (int)Math.ceil( mmOtMapls.size()/1000.0 );for(int i=0; i< times; i++ ){tbMmOtMaplService.mergeInto(mmOtMapls.subList(i * 1000, Math.min((i + 1) * 1000, mmOtMapls.size())));}}}

可参考
https://blog.csdn.net/weixin_43303530/article/details/108495327

oracle merge into 批量新增或更新相关推荐

  1. oracle应用之批量新增更新数据

    本博客介绍一下Oracle批量新增数据和更新数据的sql写法,业务场景是这样的,往一张关联表里批量新增更新数据,然后,下面介绍一下批量新增和更新的写法: 批量新增数据 对于批量新增数据,介绍两种方法 ...

  2. linq to object 、linq to sql 、linq to entity 批量 新增、更新、删除功能扩展

    最近在codeplex上找到了一个功能比较全的linq to object .linq to sql .linq to entity新增.修改.删除功能扩展的控件--magiq. 以linq to s ...

  3. oracle事务提交前更新机制,Oracle 事务机制 批量添加,修改,更新

    ---------------------------------------------------------------------------------------------2011-12 ...

  4. oracle批量将id更新为uuid,oracle批量新增更新数据

    本博客介绍一下Oracle批量新增数据和更新数据的sql写法,业务场景是这样的,往一张关联表里批量新增更新数据,然后,下面介绍一下批量新增和更新的写法: 批量新增数据 对于批量新增数据,介绍两种方法 ...

  5. ORACLE 数据同步时,批量进行新增和更新操作的SQL写法

    场景模拟:比如自己项目的一张EMP员工信息表,数据来源需要从第三方系统获取,随时可手动同步更新,也可以定时自动同步.一般情况下,通过创建时间或者最后更新时间,获取自上次同步后的数据增量,全部插入本地的 ...

  6. 基于ruoyi+vue+elementUI实现列表,新增,附件上传,tab+springBoot+mybatis+oracle序列+批量新增

    基于ruoyi+vue+elementUI实现列表,新增,附件上传,tab+springBoot+mybatis+oracle序列+批量新增 页面效果 列表页面 新增页面 详情页面 代码实现 列表+新 ...

  7. oracle批量新增字段工具,mybatis 中oracle 批量新增三种方法

    第一种 < insert  id =" insert_table "  parameterClass ="java.util.List" > ins ...

  8. mybatis批量新增和批量更新的效率对比

    今天,为了更多了解下,mybatis批量新增和批量更新在simple/batch模式 + MySQL的rewriteBatchedStatements下效率有什么区别,做了一次实验. 实验结果,让人意 ...

  9. MyBatis + Oracle 实现批量新增和批量修改

    MyBatis + Oracle 实现批量新增(基于序列化自增长主键) mapper 接口 void batchInsert(List<ASingleProject> list); map ...

最新文章

  1. pythonbyte连接_Python3之字节串bytes与字节数组bytearray的使用详解
  2. 被忽视的 Application
  3. 引用可以是void类型吗?
  4. python求最大连续子数组
  5. 再见,Navicat!这个 IDEA 的兄弟,真香!
  6. 4.jenkins 添加一台 Linux 服务器
  7. C# NFine开源框架 调用存储过程的实现代码
  8. python-回调函数
  9. 初中中考计算机考试,中考信息技术考试
  10. 常用web服务器架构理解
  11. 排兵布阵问题java语言_hdu 4539 郑厂长系列故事——排兵布阵
  12. 41.clip-path 滚动特效
  13. 公众号小额打款验证_已经注册完的公众号如何进行小额打款验证。?
  14. JZOJ4788. 序列
  15. Switch开关,两边字隐藏
  16. Golang如何实现排序
  17. 宝塔 控制面板如何添加新网站
  18. 【CIKM 2021】推荐系统相关论文分类
  19. 类变量、成员变量、实例变量、局部变量、静态变量、全局变量 的解释。
  20. Burp Suite进行账号密码爆破

热门文章

  1. Unix Socket
  2. Windows 10自动更新问题以及解决
  3. 前端点击图片,图片放大
  4. EasyExcel导出数据超过Excel单表上限时进行分表
  5. “抢滩”日本市场 细数阿里云国际化道路与战略
  6. CHOOSE()函数与RANDBETWEEN()函数的共用
  7. Ubantu系统下分卷压缩文件的解压
  8. EXPLAIN用法和结果分析
  9. 软件测试零基础快速入门
  10. MyBatis_通用mapper注解开发