广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >Mybatis-Plus批量添加或修改数据的三种方式
  • 385
分享到

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

springbootmybatisjavamybatis-plus 2023-10-12 06:10:30 385人浏览 泡泡鱼
摘要

SpringBoot批量添加或修改数据的三种方式 方式一.mybatis-plus 提供的 saveOrUpdateBatch 提供的方法 是遍历每一个元素,判断主键是否存在,如果存在则做更新,不存在

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

方式一.mybatis-plus 提供的 saveOrUpdateBatch

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

image-20230411142159127

image-20230411142521452

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

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

        queryWrapper = new QueryWrapper<>();        queryWrapper.select("PROC_INSTANCEID");        List bpmProcInstanceList = iBpmProcInstanceDaoService.list(queryWrapper);        //获取所有主键        List procList = bpmProcInstanceList.stream().map(BpmProcInstance::getProcInstanceid).collect(Collectors.toList());        //分组        Map> 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                #插入的数据                        ON DUPLICATE KEY UPDATE        # 当主键重复时,需要更新的字段以及对应的数据        字段名1=VALUES(字段名1),        字段名2 =VALUES(字段名2)        ......        

来源地址:https://blog.csdn.net/JAVAlife2021/article/details/130084813

--结束END--

本文标题: Mybatis-Plus批量添加或修改数据的三种方式

本文链接: https://www.lsjlt.com/news/429101.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作