Mybatis-Plus 3.2.0与3.4.0的坑

【SpringBoot3】Spring Boot 3.0 集成 Mybatis Plus MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 阅读详情

批量插入

3.2.0版本中,IService有一个看着很迷惑人的一个方法

boolean saveBatch(Collection<T> entityList, int batchSize);

以为这个是批量插入,其实不然,跟随代码进入底层会发现:

    public boolean saveBatch(Collection<T> entityList, int batchSize) {
        String sqlStatement = this.sqlStatement(SqlMethod.INSERT_ONE);
        SqlSession batchSqlSession = this.sqlSessionBatch();
        Throwable var5 = null;

        try {
            int i = 0;

            for(Iterator var7 = entityList.iterator(); var7.hasNext(); ++i) {
                T anEntityList = var7.next();
                batchSqlSession.insert(sqlStatement, anEntityList);
                if (i >= 1 && i % batchSize == 0) {
                    batchSqlSession.flushStatements();
                }
            }

            batchSqlSession.flushStatements();
            return true;
        } catch (Throwable var16) {
            var5 = var16;
            throw var16;
        } finally {
            if (batchSqlSession != null) {
                if (var5 != null) {
                    try {
                        batchSqlSession.close();
                    } catch (Throwable var15) {
                        var5.addSuppressed(var15);
                    }
                } else {
                    batchSqlSession.close();
                }
            }

        }
    }

其实还是一个for循环插入,由于项目使用的是3.2.0,使用这个方法插入,被领导疯狂吐槽,然后不得不用xml进行批量插入,坑爹呀。。。
反观3.4.0的批量插入:
需要手写一个注入器在配置类中:
注入器:

public class SqlInjector extends DefaultSqlInjector {
    @Override
    public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
        List<AbstractMethod> methodList = super.getMethodList(mapperClass);
        methodList.add(new InsertBatchSomeColumn());
        return methodList;
    }
}
@Configuration
public class MybatisPlusConfig {
    @Bean
    public SqlInjector sqlInjector(){
        return new SqlInjector();
    }
  }

然后手写一个mapper,基于baseMapper

public interface MyBaseMapper<T> extends BaseMapper<T> {

    /**
     * 批量插入 仅适用于mysql
     *
     * @param entityList 实体列表
     * @return 影响行数
     */
    Integer insertBatchSomeColumn(Collection<T> entityList);
}

业务mapper在继承手写的mapper:

@Mapper
public interface MysqlDao extends MyBaseMapper<MysqlEntity> {
}

这样的话,就可以在业务代码中实现批量插入了,真正的毫秒级~但是仅仅限于MySQL。。

分页

在3.2.0版本中,分页可以直接写,举例:

    public List<TestData> findPage(int startNum, int pageSize) {
        IPage<TestData> page = new Page<>(startNum,pageSize);
        QueryWrapper<TestData> wrapper = new QueryWrapper<>();
        IPage<TestData> page1 = testDao.selectPage(page,wrapper);
        List<TestData> dataList = page1.getRecords();
        return dataList;
    }

在3.4.0中,还是同样的方法,发现每次不管传递的分页参数是多少,都只查询出500条:
原来在底层中,将条数进行了限制:
在这里插入图片描述
同样,在3.4.0版本中,要想使用分页功能,也需要将对应的注入器加入配置类来实现:

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //向Mybatis过滤器链中添加分页拦截器
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        //还可以添加他的拦截器
        return interceptor;
    }

这样就可以继续使用3.2.0版本的分页功能了。。

后续如果有其他的坑再分类整理~

若依cloud-3.4.0 Mybatis-Plus替换 阅读详情

相关推荐

Mybatis Plus 3.0 快速入门

(简称 MP)是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

softshow1026的博客 1093

MyBatisPlus 3.2.0版本的分页器配置

MybaisPlus3.2.0版本的分页器配置,因为使用3.4.3版本的代码生成器会出现版本不兼容的问题,所以选择低版本配置

Housenhao的博客 1388

Mybatis Plus 3.0+快速入门

Mybatis plus(简称 MP)是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

weixin_42396003的博客 1288

Mybatis Plus升级至3.4.0,MyBatis PLUS V3.4.0

背景介绍 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MateCloud一直使用这个增强工具。目前已经升级至3.4.0版本。 升级说明 fix: @TableName.autoResultMap=true 情况下, 内置的 selectBody 将不会进行 as ,使用了的需要注意!!! feat: 新增 mybatis-plus-boot-starter-test 模块 fix: MetaObjectHa

bufegar0的博客 3298

Spring Boot 3 专栏:Spring Boot 3.4.0 整合 Mybatis-plus 和 Mybatis

Mybatis 和 Mybatis-plus 作为 Java 生态中广泛使用的 ORM 框架,在 Spring Boot 项目中有着极高的使用率。本文将详细介绍如何在 Spring Boot 3.4.0 项目中同时整合 Mybatis 和 Mybatis-plus,并展示它们的协同工作方式。@Data@TableName("t_user") // Mybatis-plus 注解@TableId(type = IdType.AUTO) // Mybatis-plus 主键策略。

lssffy的博客 1872

Spring Boot3整合MyBatis-Plus实战与避坑指南

ORM框架作为Java持久层的核心技术,通过对象关系映射简化数据库操作。MyBatis-Plus作为MyBatis的增强工具,提供了更便捷的CRUD操作和条件构造器。在Spring Boot3环境下,其自动配置机制和SQL生成原理有了重要变化,需要特别注意依赖管理、实体映射等核心配置。本文针对企业级应用开发场景,详细解析Spring Boot3与MyBatis-Plus整合过程中的版本兼容性问题、Lambda表达式条件构造器的正确用法,以及分页插件、二级缓存等高级特性的配置要点,帮助开发者规避常见陷阱,提升

weixin_33739541的博客 424

SpringBoot+MybatisPlus代码自动生成,MybatisPlus3.2.0版本代码生成器,mybatis-plus-generator代码生成器

前言 比较简单的代码生成方式(复制粘贴,改点配置即可) mybatis-plus-generator 3.5.1 以下版本使用 实现 pom.xml引入依赖 数据库依赖根据自己连接数据库引入,这里不写 <!--freemarker模板--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker

weixin_43992507的博客 1534

避坑指南:ArcGIS 做莫兰指数分析,你的‘空间关系概念化’选对了吗?

本文深入解析了ArcGIS中莫兰指数分析的关键参数——'空间关系概念化'的选择策略。通过对比反距离法、固定距离法和K最近邻法的适用场景与影响机制,帮助研究者避免常见误区,提升空间自相关分析的准确性和解释力。特别针对全域莫兰指数和局域莫兰指数的计算差异提供了实用建议。

weixin_30872157的博客 805

Mybatis-Plus 提供的 MybatisPlusInterceptor 拦截器来实现分页查询的功能

该方法返回一个 MybatisPlusInterceptor 对象,该对象包含了一个分页插件 PaginationInnerInterceptor,它是 Mybatis-Plus 内置的插件之一,用于分页查询。需要注意的是,为了正确地实现分页查询,我们还需要指定数据库类型,这里使用的是 MySQL 数据库,因此在创建 PaginationInnerInterceptor 对象时,我们需要传入 DbType.MYSQL 参数,这样该插件才能正确地生成分页 SQL。

qq_44260433的博客 594

Supermind量化实战:我如何给双均线策略加上“止损”和“仓位管理”,让回测收益更稳健

本文详细介绍了如何在Supermind平台上为双均线策略添加止损和仓位管理模块,以提升量化交易的稳健性。通过Python实现动态止损和智能仓位管理,策略的年化收益率从12.3%提升至15.8%,最大回撤从58.7%降至22.4%,Sharpe比率显著提高。这些实战技巧适用于量化交易爱好者,帮助他们在黑天鹅行情中保持收益稳定。

weixin_42567752的博客 362

W5500+STM32F103C8T6进行TCP通信(modbus)

一路生花一、w5500资料二、modbus通信三、从机代码四、总结五、参考 一、w5500资料 w5500的资料就放在下面了,单纯的客户端和其他模式上面有教程 https://www.aliyundrive.com/s/enPnnZgNtpE 二、modbus通信 Modbus RTU通信时使用的数据帧结构如下图,而Moubus TCP通信的数据帧和这个稍微不一样,没有crc检验,因为tcp本就是一种可靠传输协议 这里是Modbus TCP数据帧 公共功能码定义 三、从机代码

junseven164的博客 5777

mybatis升级为mybatis-plus踩到的坑

前言 最近使用RuoYi-Vue来做后台管理脚手架。RuoYi-Vue 是一个 Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot、Spring Security、MyBatis、Jwt、Vue),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、代码生成等。在线定时任务配置;支持集群,支持多数据源。其官方文档如下 http://doc.ruoyi.vip/ 感兴趣的朋友,可以点链接查看。这个平台目前的orm框架是mybatis,而项目组的orm框架

kingwinstar的博客 5840

Python爬虫实战(基础篇)—23—爬取微信小程序<随机目的地旅行>生成随机地址(附GUI版)

爬取微信小程序<随机目的地旅行>生成随机地址

weixin_42636075的博客 1228

校园报修系统 - Spring Boot + MyBatis-Plus 项目环境搭建全流程与踩坑实录

项目环境搭建、框架搭建全过程记录 + 踩坑总结

2401_88193358的博客 263

CloudCompare

分割点云:选中要分割的点云文件–>Segment–>左键框出要分割的点或者区域–>Segment Out–>Comfirm Segmentation,原点云文件被分割成两个结构,选中分割出来的remaining,右键delete即可。qSRA (Surface of Revolution Analysis):计算一个点云和一个假定旋转平面之间的距离(旋转平面用2D轮廓定义),距离计算好后,用户可以创建一个偏差的2D图或者圆柱或圆锥的投影。②表现为同样的对象或者至少有同样的形状。

xiaoyaolangwj的博客 4709

玩转企业微信群机器人:一份超详细的Webhook消息推送指南

企业微信群机器人是一个连接内部协作与外部服务的强大桥梁。通过灵活运用本文介绍的各种消息类型,你可以构建出丰富多彩、信息明确的自动化通知系统,极大地提升团队沟通效率。现在,就动手试试,将你的第一个机器人集成到工作流中吧!如果你有任何有趣的机器人应用场景或遇到了问题,欢迎在评论区留言交流!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 3975

SpringBoot2.3.4整合MyBatis-Plus3.4.0和Swagger3.0

简介 MyBatis是常用的持久层框架,深得广大程序员的喜爱,MyBatis-Plus是在MyBatis的基础之上实现的增强版持久层框架,开发更加简洁,效率更高。详见MyBatis-Plus官网 本文主要介绍基于SpringBoot2.3.0集成MyBatis-Plus3.4.0,并使用Swagger3.0测试 数据库表 新建数据库springboot并在其下建立测试表sys_user DROP TABLE IF EXISTS `sys_user`; CREATE TABLE `sys_user` (

liu320yj的博客 2438

终于找到两个稳定好用的Docker镜像加速源,拉取速度提升几十倍!

国内使用Docker经常遇到镜像拉取慢、超时失败的问题🐳 本文分享两个亲测好用的免费镜像加速源⚡ 实测拉取速度从十几分钟缩短到几十秒,稳定性接近100%📊 支持一键配置脚本,支持多平台使用✨

XiaoqiangClub的博客 946

Mybatis-Plus 3.4.0 入门

Mybatis-Plus 3.4.0的依赖发生了变化

迷失的星星的博客 3490

YOLOv11改进 | Neck篇 | 轻量化跨尺度跨通道融合颈部CCFM助力YOLOv11有效涨点

到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的平均质量分98分,后期我会根据各种最新的前沿顶会进行论文复现,也会对一些老的改进机制进行补充,目前本专栏免费阅读(暂时,大家尽早关注不迷路~)如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~YOLOv11有效涨点专栏——本专栏持续复习各种顶会内容——科研必备​ycb。

Snu77的博客 8079

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

springboot2.3整合mybatis-plus3.3.2较为详细的教程

springboot2.3整合mybatis-plus3.3.2较为详细的教程前言项目环境maven依赖如下项目配置如下建表语句如下使用mybatis-plus代码生成插件生成代码配置分页插件启动类加扫描dao注解mabatis-plus 基础演示mybatis-plus的条件构造器自定义sql语句 前言 mybatis官网 Mybatis-Plus是一个Mybatis框架的增强插件,核心理念 是为简化开发而生 根据官方描述,MP只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑.并且只需简单配置,

wangijun 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Spring Boot 4.0 与 MyBatis Plus 整合完整指南

SpringBoot4.0整合MybatisPlus完整指南,使用最新的SpringBoot4.0新特性,虚拟线程

小坏说Java,一个专注Java微服务架构的实战,Java全栈教程,SpringBoot, SpringCloud微服务到分布式、高并发架构,大数据开发,运维实战,K8S、Docker容器为一体的教程,结合企业级内部的技术栈学习 4136

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

MyBatis-Plus 新版本 3.4.0 乐观锁以及分页配置

mybatis-plus3.4.0,乐观锁配置(OptimisticLockerInterceptor已经弃用)和分页配置(PaginationInterceptor已经弃用),文档推荐使用 //乐观锁 @deprecated 3.4.0 please use {@link MybatisPlusInterceptor} {@link OptimisticLockerInnerInterceptor} //分页配置 @deprecated 3.4.0 please use {@link MybatisP

liuerchong的博客 2508

从0到1搭建 SpringBoot + MyBatis-Plus 项目

在动手写代码之前,必须先理解这几个概念。就像学开车前要知道方向盘、油门、刹车分别是什么。 最终效果:在浏览器里输入网址,就能看到从数据库查出来的 JSON 数据。一句话:Spring Boot 让你用最少的代码和配置,快速搭建一个能运行的 Java Web 项目。一句话:MyBatis-Plus 让你不用写 SQL 就能操作数据库,它自动帮你生成。一句话:Maven 管理项目依赖,你只需要在 里声明需要什么,它自动下载。一句话:REST API 就是一套"用网址 + HTTP方法"来操作数据的规范。

2509_93853891的博客 993

Mybatis Plus 3.4.0分页拦截器的用法,解说mybatis plus 3.4.0的新内置插件

Mybatis Plus 3.4.0 新增了如下地内置插件: 主体插件: MybatisPlusInterceptor 该插件内部插件集: 分页插件: PaginationInnerInterceptor 多租户插件: TenantLineInnerInterceptor 动态表名插件: DynamicTableNameInnerInterceptor 乐观锁插件: OptimisticLockerInnerInterceptor sql性能规范插件: IllegalSQLInnerInterceptor

bufegar0的博客 1万+
上一篇: 对List进行分割的几种方式
下一篇: String转换List<JSONObject>
CodersCoder
博客等级 码龄10年 90粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值