Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Mybatis Plus批量更新,批量插入最佳实践

Mybatis Plus批量更新,批量插入最佳实践

原创
作者头像
用户11264735
修改于 2024-09-02 06:44:54
修改于 2024-09-02 06:44:54
2.1K00
代码可运行
举报
运行总次数:0
代码可运行

1、解决什么问题?

再日常业务开发过程中,总是会遇到批量操作数据库的情况,但我们使用Mybatis Plus的基类BaseMapper只为我们提供了批量查询的能力,而批量更新,批量插入等操作却没有提供。作为初学者如果搜索Mybatis Plus如何实现批量更新,批量插入就会出现一大批莫名其妙的解决方案,其实Mybatis Plus也提供了非常简单实现方式。接下来让我们来一起看一下怎么实现。

2、最佳实践

1、首先定义UserService接口并继承Iservice<T>,在Iservice<T>中定义了许多常用的方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public interface UserService extends IService<UserPo> {

    void updateByIdBatch(List<UserDTO> userDTOs);
}

2、在Mapper中我们可以采用继承ServiceImpl<M extends BaseMapper<T>, T> 的方式,看ServiceImpl的源码就可以发现它实现了Iservice<T>接口,这样我们就可以采用this.saveBatch()实现批量插入,this.updateBatchById()实现批量更新了。如果你的代码中已经有了Mapper类,这种实现方式也是可以兼容的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class UserServiceImpl extends ServiceImpl<UserPOMapper, UserPO>  implements UserService{

    @Resource
    private UserPOMapper userPOMapper;

    @Resource
    private UserConverter userConverter;


    @Override
    public void saveBatch(List<UserDTO> userDTOs) {
        this.saveBatch(userConverter.userDTOList2PO(userDTOs));
    }

    @Override
    public void updateByIdBatch(List<UserDTO> userDTOs) {
        this.updateBatchById(userConverter.userDTOList2PO(userDTOs));
    }
    

}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
浅谈MyBatis批量插入方法,10w条数据处理仅需2秒
接下来我们将使用 Spring Boot 项目,批量插入 10W 条数据来分别测试各个方法的执行时间。
用户10216580
2022/12/06
7.9K1
浅谈MyBatis批量插入方法,10w条数据处理仅需2秒
MyBatis Plus 批量数据插入功能,yyds!
最近 Review 小伙伴代码的时候,发现了一个小小的问题,小伙伴竟然在 for 循环中进行了 insert (插入)数据库的操作,这就会导致每次循环时都会进行连接、插入、断开连接的操作,从而导致一定的性能问题,简化后代码如下:
磊哥
2021/09/28
8.8K1
mybatis-plus批量插入你用对了吗
记得有一次我们小组code review,组长看了下我们批量插入是使用mybatis原生的xml foreach实现的,于是二话不说,拍桌子,说这有性能问题。叫我们直接使用mybatis-plus,可是为啥呢?怎么用,需要注意哪些地方,也没给我们说个明白。好吧,我们对这一块也没具体调研过,就直接按他的想法去实现了。性能有没有提升了好几倍呢,其实也没实践过,反正review过了。直到有一天。。。
阿建dong一点
2022/11/26
3.9K1
Mybatis Plus 批量插入性能优化,非常实用!
物联网平台背景,传感器采集频率干到了1000Hz,分了100多张表出来,还是把mysql干炸了。当前单表数据量在1000来w,从kafka上拉数据异步批量插入,每次插入数据量1500条,测试的时候还没问题,结果上线没多久,kafka服务器直接挂了,赶忙看日志,kafka服务器堆积了几十G的数据,再去看生产环境日志,发现到最后单次批量插入用时固定在10多秒,甚至20多秒,kafka直接把消费端踢出了消费组…从而kafka消息一直没有消费,总重导致kafka数据堆积挂掉了…
码猿技术专栏
2023/05/01
7.8K2
Mybatis Plus 批量插入性能优化,非常实用!
Data Access 之 MyBatis Plus(三)- MPG代码生成器(Part B)
MPG代码生成器生成的Service接口继承了MP的IService接口,该接口除了基本的增删改查外,还包含了一些批量操作方法,该接口中定义的方法除了default方法外都在ServiceImpl类中实现了
RiemannHypothesis
2022/08/19
1K0
Data Access 之 MyBatis Plus(三)- MPG代码生成器(Part B)
真正的mybatis-plus批量插入(Mysql语法)
mybatis-plus内置提供了InsertBatchSomeCulumn来实现真批量插入,但是由于只支持MySQL的语法格式,所以没有在通用的API作为默认使用。
用户1448294
2023/10/27
6.4K0
MyBatis Plus中的批量插入:通过开启rewriteBatchedStatements=true
在MyBatis Plus框架中,批量插入是一种高效的数据库操作方式。通过开启rewriteBatchedStatements=true,可以获得许多优点,从而提高数据库插入性能、减轻负载以及简化代码。
GeekLiHua
2025/01/21
2900
MyBatis-Plus 之Service CRUD 接口
IService 接口: IService是MyBatis-Plus提供的通用Service接口,用于提供CRUD操作。它继承自Spring的org.springframework.data.service.CrudRepository接口,具有常见的CRUD方法。
默 语
2024/11/20
1900
MyBatis-Plus 之Service CRUD 接口
微服务项目:尚融宝(3)(上手复习mybatisplus)
MP中有一个接口 IService和其实现类 ServiceImpl,封装了常见的业务层逻辑
一个风轻云淡
2022/11/15
2230
微服务项目:尚融宝(3)(上手复习mybatisplus)
Mybatis-Plus批量插入应该怎么用
mybatis-plus的 IService接口 默认提供 saveBatch批量插入,也是唯一一个默认批量插入,在数据量不是很大的情况下可以直接使用,但这种是一条一条执行的效率上会有一定的瓶颈,今天我们就来研究研究mybatis-plus中的批量插入。
鱼找水需要时间
2023/02/16
3.3K0
Mybatis-Plus批量插入应该怎么用
MyBatis原生批量插入的坑与解决方案!
前面的文章咱们讲了 MyBatis 批量插入的 3 种方法:循环单次插入、MyBatis Plus 批量插入、MyBatis 原生批量插入,详情请点击《MyBatis 批量插入数据的 3 种方法!》。 ​
磊哥
2021/10/21
1.3K0
MyBaties-Plus 批量入库
MyBaties-Plus 是 MyBaties 的增强版,MyBaties 有的功能它都有,MyBaties 没有的功能它也有。MP 有许多优点,但是这里我只记录批量插入的方法,好处是大数据量速度相对来说很快,有兴趣的可以自己做下对比。实现步骤如下。
charmsongo
2022/01/23
6470
mybatisplus iservice接口(iphone 8 plus怎么样)
编写UserviceImpl实现类,继承ServiceImpl并实现UserService
全栈程序员站长
2022/07/25
1970
SpringBoot项目拥抱Mybatis-Plus持久层框架实践,全面提升数据库层面开发效率!
自从 Mybatis-Plus推出以来,越来越多的公司在自己的项目中选择Mybatis-Plus框架替换了持久层框架Mybatis。因为Mybatis-Plus用起来既有Mybatis的手写复杂sql语句的灵活性,又兼具了Spring Data Jpa自动提供了单表CRUD操作的通用框架方法,只需要自定义一个Mapper并继承BaseMapper即可,为开发人员使用持久层框架节约了很多工作量。同时Mybatis-Plus还提供了链式查询和分页查询等诸多通用API方法,开发人员可直接使用。本文的目的是指导新手如何在自己的spring-boot项目中集成mybatis-plus持久层框架完成数据的增删改查功能。
用户3587585
2021/12/07
2K0
SpringBoot项目拥抱Mybatis-Plus持久层框架实践,全面提升数据库层面开发效率!
【MyBatis-Plus】快速精通Mybatis-plus框架—核心功能
刚才的案例中都是以id为条件的简单CRUD,一些复杂条件的SQL语句就要用到一些更高级的功能了。
陶然同学
2023/10/14
1.2K0
【MyBatis-Plus】快速精通Mybatis-plus框架—核心功能
MyBatisPlus笔记
先来看看插入用户的操作,在MyBatisPlus中给我们提供一个insert()方法来实现。
Java鱼头
2022/11/30
6071
MyBatis 批量插入数据的 3 种方法!
批量插入功能是我们日常工作中比较常见的业务功能之一,之前我也写过一篇关于《MyBatis Plus 批量数据插入功能,yyds!》的文章,但评论区的反馈不是很好,主要有两个问题:第一,对 MyBatis Plus(下文简称 MP)的批量插入功能很多人都有误解,认为 MP 也是使用循环单次插入数据的,所以性能并没有提升;第二,对于原生批量插入的方法其实也是有坑的,但鲜有人知。 ​
磊哥
2021/10/13
4.3K1
SpringBoot+SpringMVC+MybatisPlus框架整合实现分页插件查询
1、首先介绍一下,mybatisPlus 根据官方文档的介绍,MybatisPlus(简称mp)是对mybatis的增强而不做改变,只为ti提高效率简化开发,具体参见http://mp.baomido
故久
2019/09/29
1.8K0
SpringBoot+SpringMVC+MybatisPlus框架整合实现分页插件查询
Mybatis-Plus核心功能
ma布
2024/10/21
1340
spring boot+mybatis plus 批量插入数据的操作方法
spring boot+mybatis plus环境,单条插入用的是BaseMapper自带的insert方法
用户7353950
2022/06/23
1.7K0
相关推荐
浅谈MyBatis批量插入方法,10w条数据处理仅需2秒
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验