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

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>


http://www.kler.cn/a/159634.html

相关文章:

  • Android 项目依赖库无法找到的解决方案
  • Qt主线程把数据发给子线程,主线程会阻塞吗
  • 斯坦福泡茶机器人DexCap源码解析:涵盖收集数据、处理数据、模型训练三大阶段
  • 计算机网络 (1)互联网的组成
  • 前端vue 列表中回显并下拉选择修改标签
  • 【C#设计模式(4)——构建者模式(Builder Pattern)】
  • vue select选择下拉组织树,解决不出现横向滚动条
  • C#用MathNet生成矩阵,并打印矩阵元素
  • 智能优化算法应用:基于冠状病毒群体免疫算法无线传感器网络(WSN)覆盖优化 - 附代码
  • Python list tuple dict set的文件持久操作
  • acwing算法基础之时空复杂度分析
  • MFC对话框集成OSG无法响应键盘事件
  • 使用Pytorch从零开始实现BERT
  • python爬虫-某公开数据网站实例小记
  • vue中el-upload结合vuedraggable实现图片的上传、排序、删除以及预览等功能
  • 2023-12-01 AndroidR 系统在root目录下新建文件夹和创建链接,编译的时候需要修改sepolicy权限
  • 创建腾讯云存储桶---上传图片--使用cos-sdk完成上传
  • 简介Kadane算法及相关的普通动态规划
  • RepidJson将内容格式化后写入文件
  • 【OpenSSH升级】升级后证书认证登录突然失效
  • C语言能判断一个变量是int还是float吗?
  • 若依框架 前台自己获取登录用户信息
  • 矩阵处理—转圈打印矩阵
  • HomeAssistant如何添加HACS插件实现公网控制米家与HomeKit等智能家居
  • Redis的基本数据类型及常用命令
  • Codeforces Round 913 (Div. 3) A~E(F,G更新中)