当前位置: 首页 > news >正文

ORACLE使用Mybatis-plus批量插入

ORACLE使用mybatis-plus自带的iservice.saveBatch方法时,会报DML Returing cannot be batch错误:

推测原因是oracle不支持insert into table_name (,) values (,),()的写法。且oracle不会自动生成自增ID。

解决方案:

1)创建oracle序列号,用于生成自增主键

CREATE SEQUENCE SYS_ROLE_PERMISSION_SEQ INCREMENT BY 1 MINVALUE 1 MAXVALUE 9999999999999999999999999999 NOCYCLE CACHE 20 NOORDER 

2)创建触发器,在数据插入时,自动增加主键

CREATE OR REPLACE trigger ID_INCREAMENT
before insert on SYS_USER_ROLE
for each row
begin
  select "SYS_USER_ROLE_SEQ"."NEXTVAL" into :new.id from dual;
end;

3)手动定义mapper,批量插入

 <insert id="batchInsert" parameterType="java.util.List">
     INSERT ALL
     <foreach collection="sysUserRoles" item = "item" separator=" "
            close="SELECT * FROM dual" index="index">
        INTO SYS_USER_ROLE (USER_ID, ROLE_ID) values (#{item.userId}, #{item.roleId})
     </foreach>
 </insert>

相关文章:

  • 服务器数据恢复—ocfs2文件系统被格式化为其他文件系统如何恢复数据?
  • LabVIEW在不同操作系统上使VI、可执行文件或安装程序
  • kubeadm 安装k8s1.28.x 底层走containerd 容器
  • Nacos源码解读04——服务发现
  • 在AWS Lambda上部署EC2编译的FFmpeg工具——自定义层的方案
  • 微信小程序基础bug
  • 校园教务管理系统
  • python门户网站文件爬取并显示
  • web:very_easy_sql(sql、ssrf、gopher协议sql注入)
  • 【数据结构和算法】到达首都的最少油耗
  • 【Gradle】mac环境安装Gradle及配置
  • 从零构建属于自己的GPT系列3:模型训练2(训练函数解读、模型训练函数解读、代码逐行解读)
  • 原型模式(Prototype Pattern)
  • 2023-12-04 AIGC-Stable Diffusion和SadTalker-搭建及使用
  • HarmonyOS Developer——鸿蒙【构建第一个JS应用(FA模型)】
  • MySQL之数据库及表操作
  • 微信小程序适配方案:rpx(responsive pixel响应式像素单位)
  • Jmeter分布式压力测试详解
  • Flink State 状态原理解析 | 京东物流技术团队
  • C++基础
  • 人民时评:透过上海车展读懂三组密码
  • 夜读丨古代有没有近视眼?
  • 上海启动万兆光网试点建设,助力“模速空间”跑出发展加速度
  • 首家股份行旗下AIC来了,兴银金融资产投资有限公司获批筹建
  • 潘功胜:将下调个人住房公积金贷款利率0.25个百分点
  • 专家解读《人源类器官研究伦理指引》:构建类器官研究全过程伦理治理框架