Mybatis-Plus批量添加或修改数据的三种方式

news2024/11/15 19:33:28

SpringBoot批量添加或修改数据的三种方式

方式一.Mybatis-plus 提供的 saveOrUpdateBatch

提供的方法 是遍历每一个元素,判断主键是否存在,如果存在则做更新,不存在添加

image-20230411142159127

image-20230411142521452

方式二.分组数据再批量添加或修改

先获取表中所有的主键 ,然后 判断是否已存在,存在更新,不存在添加

        queryWrapper = new QueryWrapper<>();
        queryWrapper.select("PROC_INSTANCEID");
        List<BpmProcInstance> bpmProcInstanceList = iBpmProcInstanceDaoService.list(queryWrapper);
        //获取所有主键
        List<String> procList = bpmProcInstanceList.stream().map(BpmProcInstance::getProcInstanceid).collect(Collectors.toList());
        //分组
        Map<Boolean, List<BpmProcInstance>> booleanListMap = bpmProcInstances.stream().collect(Collectors.groupingBy(b -> {
            return procList.contains(b.getProcInstanceid());
        }));
        //true 则更新  false 修改
        iBpmProcInstanceDaoService.updateBatchById( booleanListMap.get(true));
        iBpmProcInstanceDaoService.saveBatch( booleanListMap.get(false));

方式三. 利用MySQL的on duplicate key update

on duplicate key update 是Mysql特有的语法,如下图所示,表中id 为主键

image-20230411150035835

再插入id为1的数据,则提示主键已存在

改成如下SQL,则当主键重复时,将更新 字段 name 的值

INSERT into  provider values (1,'w') ON DUPLICATE KEY UPDATE `name` = 'w';

因此我们可以编写如下的XML映射语句

 insert into 表名 (需插入的字段)
        values
        <foreach collection="list" item="item" index="index" separator=",">
        	#插入的数据
        </foreach>
        
        ON DUPLICATE KEY UPDATE
        # 当主键重复时,需要更新的字段以及对应的数据
        字段名1=VALUES(字段名1),
        字段名2 =VALUES(字段名2)
        ......
        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/410843.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6D姿态检测

3D相机—结构光相机 结构光&#xff0c;英文叫做 Structured light&#xff0c;其原理是基本原理是&#xff0c;通过近红外激光器&#xff0c;将具有一定结构特征的光线投射到被拍摄物体上&#xff0c;再由专门的红外摄像头进行采集。这种具备一定结构的光线&#xff0c;会因被…

如何在TikTok视频描述中提高用户参与度

鑫优尚电子商务&#xff1a;TikTok视频描述&#xff08;包括话题标签&#xff09;有150个字符的限制&#xff0c;因此卖家需要合理撰写出有趣且有实际意义的视频描述。可尝试将描述保持在140个字符以内&#xff0c;将最重要的信息放在前面&#xff0c;并通过多次修改文案以排除…

蚂蚁4.11笔试

文章目录前言一、红蓝格子填字母【蚂蚁4.11笔试第三题】解法一&#xff1a;二分解法解法二&#xff1a;模拟二、桌上弹球游戏【蚂蚁4.11笔试第二题】每日一题day82&#xff1a;困于环中的机器人&#xff08;力扣1041&#xff09;前言 1、红蓝格子填字母 2、桌上弹球游戏 3、困…

12 个好用且不花钱的网络监控工具

导读要让一个多级机构运行良好而且平稳的话&#xff0c;一个非常艰巨重大的任务就是做好网络管理。每个机构都配备专门的人员&#xff0c;即网络分析师&#xff0c;来进行网络管理。他们 使用了 许多工具来监视网络的运行状况&#xff0c;并查看网络流量的上升和下降状况。他们…

机器学习 03 K-近邻算法

目录 一、K-近邻算法 1.1 K-近邻算法(KNN)概念 1.1.1 概念理解举例 1.2 KNN算法流程总结 1.3 K值的选择 1.3.1 举例说明 1.4 kd树 1.4.1 KD树原理 1.4.2 树的建立 1.5 最近领域的搜索 k近邻算法优缺点 二、距离度量 2.1 距离公式的基本性质 2.2 常见的距离 2.2.…

进程间通信之消息队列

消息队列一. 什么是消息队列二. 消息队列有关函数1.获取key - ftok2.创建消息队列 - msgget3.发送消息 - msgsnd4.接收消息 - msgrcv5.删除消息队列 - msgctl三. 实例注意:一. 什么是消息队列 消息队列独立于发送消息的进程和接收消息的进程&#xff0c;消息队列是消息的链表&…

【牛客刷题专栏】0x19:JZ18 删除链表的节点(C语言编程题)

前言 个人推荐在牛客网刷题(点击可以跳转)&#xff0c;它登陆后会保存刷题记录进度&#xff0c;重新登录时写过的题目代码不会丢失。个人刷题练习系列专栏&#xff1a;个人CSDN牛客刷题专栏。 题目来自&#xff1a;牛客/题库 / 在线编程 / 剑指offer&#xff1a; 目录前言问题…

GPT-5年底上线?初创公司Runway CEO再爆料:OpenAI员工相信GPT-5有望成AGI

来源: 新智源 微信号&#xff1a;AI-era 最近&#xff0c;Runway CEO关于GPT-5的爆料&#xff0c;又被网友们翻了出来&#xff0c;讨论得热火朝天。不论AGI会在哪一年出现&#xff0c;显然&#xff0c;能见证这一天的人都是幸运的。 最近&#xff0c;又有网友翻出了关于GPT-5的…

初识Linux+Linux基本指令(一)

目录 一.&#x1f606;计算机与操作系统&#x1f606; 计算机与操作系统发展史简介: 计算机与操作系统的关系: 二.&#x1f604;Linux操作系统&#x1f604; 开源软件的代名词:Linux 非图形化界面的Liunx 三.&#x1f606;Linux基本指令之文件管理篇&#x1f606; 1.操…

Spring配置数据源

Spring配置数据源数据源的作用环境准备手动创建c3p0数据源封装抽取关键信息&#xff0c;手动创建c3p0数据源使用Spring容器配置数据源数据源的作用 数据源(连接池)是提高程序性能如出现的 事先实例化数据源&#xff0c;初始化部分连接资源 使用连接资源时从数据源中获取 使用完…

网络安全行业现在好混吗,工资水平怎么样?

前段时间看到有人私信&#xff1a;网络安全行业现在好混吗&#xff0c;工资水平怎么样&#xff1f;今天在这里做个回答&#xff0c;不知你所说的“好混吗”指的是什么&#xff1f; 薪资高&#xff0c;待遇好&#xff1f;不加班&#xff0c;活儿少&#xff1f;不受气&#xff0…

我的创作纪念日 - 2048

2048 ✌️ 今天是 2023 年 4 月 10 日&#xff0c;系统说我在 2017 年 08 月 31 日那天发布了第一篇博客&#xff08;【算法】编写一个能将给定非负整数列表中的数字排列成最大数字的程序&#xff09;&#xff0c;距离当时已经有 2048 天了&#xff0c;2048 这个数字真的很能挑…

短期突击面试攻略,收offer如砍瓜切菜!!!

​​​​​现在的面试是什么样的&#xff1f; 面试官拿到简历后会先看下你的技术栈&#xff0c;他面试你的问题就来自这些技术栈 面试官都是看人下菜碟&#xff0c;每次面试问的问题都不一样&#xff0c;会根据你回答问题的情况来决定深入的程度&#xff0c;直到了解清楚你的…

△形网络和Y型网络的变换

△形网络和Y型网络的变换 △形网络也称三角形网络&#xff0c;Y也称星形网络 我们今天就来看下这两种网络是如何变换的。 看下面的电路 如何通过计算得出电流表的读数&#xff1f; 显然电路的串并联结构并不是那么纯粹&#xff0c;Ra Rb Rc构成了一个 △形网络,如下图所示。…

小学数学题升维思考,降维打击

目录一、背景二、题目三、过程1.形式转换2.个位数相加只能向前进一位嘛&#xff1f;3.十位数上要填写的内容?4.如何下意识的去做结构化&#xff1f;四、总结五、升华一、背景 公司的产品是做K12的教育平台&#xff0c;马老板也受感染研究起了小学数学题。一道二年级的题让我窥…

Java阶段一Day19

Java阶段一Day19 文章目录Java阶段一Day19对象流字符流WriterReader转换流缓冲字符流BufferedWriter与PrintWriterBufferedReader异常Throwable、Error、Exception异常处理机制throwthrowstry-catchfinally面试题教师总结新单词JAVA IO对象流对象输入流构造器方法例transient关…

求根号n下界

目录 求根号n 程序设计 程序分析 求根号n 【问题描述】设计一个计算的算法,n是任意正整数。 除了赋值和比较运算,该算法只能用到基本的四则运算操作。 【输入形式】输入一个正整数 【输出形式】输出答案 【样例输入】10 【样例输出】3 【样例说明】表示对n开平方后向…

Linux线程基础:控制和封装

本节重点&#xff1a; 1. 了解线程概念&#xff0c;理解线程与进程区别与联系。 2. 学会线程控制&#xff0c;线程创建&#xff0c;线程终止&#xff0c;线程等待。 3. 了解线程分离与线程安全概念。 Linux线程概念 在一个程序里的一个执行路线就叫做线程&#xff08;threa…

机器学习 00 归一化/标准化

目录 一、归一化/标准化 1.1 为什么我们要进行归一化/标准化? 二、归一化 2.1 定义 2.2 公式 2.3 归一化总结 三、标准化 3.1 定义 3.2 公式 3.3 标准化总结 一、归一化/标准化 1.1 为什么我们要进行归一化/标准化? 特征的单位或者大小相差较大&#xff0c;或者某…

我的软件研发套路

春节回来之后&#xff0c;调整到一个新的团队工作。 团队&#xff0c;是已有的&#xff1b;所用的技术栈&#xff0c;不熟悉&#xff1b;所做的业务领域&#xff0c;也涉猎甚少。挑战比较大。 管理层对团队的产出不满。我的首要任务&#xff0c;是提升团队的效能。 目前团队…