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

SB4 + MyBatis Plus 3.5.15,加入依赖以后,获取列表,分页返回的total=0的解决

1、total=0原因

升级了系统以后,发现列表出来的结果total=0,但是单页的数据=1,其根本原因还是因为没有配制参数。

2、代码

@GetMapping("/list") public Result<Page<Table>> list( @RequestParam(defaultValue = "1") Long pageNum, // 推荐Long类型适配分页插件 @RequestParam(defaultValue = "10") Long pageSize, @RequestParam(required = false) String tableName ) { // 1. 初始化分页对象 Page<Table> page = new Page<>(pageNum, pageSize); // 2. 构建查询条件Wrapper(核心:只构建一次,无冗余) LambdaQueryWrapper<Table> wrapper = new LambdaQueryWrapper<Table>() .eq(Table::getSoftDel, 0) // 过滤已删除数据 .like(StringUtils.hasText(tableName), Table::getTableName, tableName) // 表名模糊查询(非空才生效) .orderByDesc(Table::getCreateTime); // 按创建时间降序排序 // 3. 执行分页查询(直接传入page和wrapper) Page<Table> tablePage = tableService.page(page, wrapper); // 4. 调试日志(可选,便于排查total=0问题) log.info("表列表分页查询结果:总条数={}, 当前页数据量={}, 查询条件:表名={}", tablePage.getTotal(), tablePage.getRecords().size(), tableName); // 5. 返回统一结果 return Result.success(tablePage); }

3、增加分页配制解决

@Configuration public class MybatisPlusConfig { /** * 分页插件(Spring Boot 4.x 唯一正确配置方式) */ @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { // 1. 创建 MyBatis-Plus 拦截器链(Spring Boot 4.x 必须用这个类) MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 2. 初始化分页插件(Spring Boot 4.x 兼容版本) PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor(DbType.MYSQL); // 3. Spring Boot 4.x 推荐配置(防止分页异常) paginationInterceptor.setOverflow(true); // 页码溢出自动处理 paginationInterceptor.setMaxLimit(1000L); // 单页最大条数限制 // 4. 将分页插件添加到拦截器链(核心步骤,否则插件不生效) interceptor.addInnerInterceptor(paginationInterceptor); return interceptor; } }

4、解决过程

PaginationInnerInterceptor依赖mybatis-plus-jsqlparser这个包(用于 SQL 解析,MyBatis-Plus 分页插件的核心依赖),缺失该依赖会直接导致类找不到。


一、完整的 Maven 依赖配置(Spring Boot 4.0.2 适配版)

pom.xml中补充mybatis-plus-jsqlparser,并统一版本:

<!-- 统一 MyBatis-Plus 版本 --> <properties> <mybatis-plus.version>3.5.15</mybatis-plus.version> </properties> <!-- MyBatis-Plus 核心依赖(Spring Boot 4.x 适配) --> <dependencies> <!-- Spring Boot 4.x 专属 starter --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-spring-boot4-starter</artifactId> <version>${mybatis-plus.version}</version> </dependency> <!-- 分页插件核心依赖(必须加!解决 PaginationInnerInterceptor 找不到) --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-jsqlparser</artifactId> <version>${mybatis-plus.version}</version> </dependency> <!-- MySQL 驱动(Spring Boot 4.x 适配) --> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> </dependencies>

关键说明:

  • mybatis-plus-jsqlparser:分页插件的 SQL 解析核心,缺失必报类找不到错误
  • 所有 MyBatis-Plus 相关依赖版本必须统一(均为 3.5.15),避免版本冲突。

二、最终版分页插件配置类

package com.czycg.mro.system.config; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * Spring Boot 4.0.2 + MyBatis-Plus 3.5.15 分页插件最终配置 * 依赖:mybatis-plus-jsqlparser + mybatis-plus-extension */ @Configuration public class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 分页插件(现在能正常识别,无报错) PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor(DbType.MYSQL); paginationInterceptor.setOverflow(true); // 页码溢出自动处理 paginationInterceptor.setMaxLimit(1000L); // 单页最大条数限制 interceptor.addInnerInterceptor(paginationInterceptor); return interceptor; } }

三、最终版分页查询接口(total 正常返回)

@GetMapping("/list") public Result<Page<Table>> list( @RequestParam(defaultValue = "1") Long pageNum, @RequestParam(defaultValue = "10") Long pageSize, @RequestParam(required = false) String tableName ) { Page<Table> page = new Page<>(pageNum, pageSize); LambdaQueryWrapper<Table> wrapper = new LambdaQueryWrapper<Table>() .eq(Table::getSoftDel, 0) .like(StringUtils.hasText(tableName), Table::getTableName, tableName) .orderByDesc(Table::getCreateTime); // 分页插件生效,自动执行 COUNT 统计 Page<Table> tablePage = tableService.page(page, wrapper); log.info("分页查询结果:总条数={}, 当前页数据量={}", tablePage.getTotal(), tablePage.getRecords().size()); return Result.success(tablePage); }

四、最后一步:强制更新依赖(确保生效)

执行以下 Maven 命令,清理缓存并重新下载依赖:

# 终端执行 mvn clean install -U
  • -U:强制更新快照 / 依赖,确保mybatis-plus-jsqlparser被正确下载;
  • 执行完成后,重启 IDE 并重新导入项目。

总结(核心解决要点)

  1. 缺失依赖:补充mybatis-plus-jsqlparser(分页插件 SQL 解析核心);
  2. 版本统一:所有 MyBatis-Plus 依赖版本均为 3.5.15,避免冲突;
  3. 配置正确:分页插件通过MybatisPlusInterceptor装载,包名带连字符;
  4. 最终效果
    • IDE 不再提示PaginationInnerInterceptor找不到;
    • 分页接口自动执行COUNT(*)统计,total显示真实总数;
    • records显示当前页数据,分页功能完全正常。

现在配置完成后,你的 Spring Boot 4.0.2|3 项目就能完美运行分页功能,所有报错都会消失。

根据原因

在 MyBatis-Plus 3.5.x(特别是 3.5.5+ 及 3.5.15 版本)中,分页插件的核心依赖mybatis-plus-jsqlparser被剥离成了独立模块,不再默认包含在mybatis-plus-extensionstarter的传递依赖中(或者在某些 Spring Boot 4 的特定打包策略下未被自动引入)。

PaginationInnerInterceptor底层强依赖JSqlParser来解析和改写 SQL。如果缺少mybatis-plus-jsqlparser依赖,编译器不仅可能找不到相关的解析类,甚至在某些构建配置下会导致PaginationInnerInterceptor类本身无法被正确加载或识别(因为类加载器校验依赖失败)。

http://www.jsqmd.com/news/419566/

相关文章:

  • 使用C#代码在 Excel 中添加或删除数字签名
  • 2026最新|腾讯云DeepSeek联网应用创建教程,零代码玩转671B大模型
  • 2026年湖北循环水药剂服务商综合实力解析与选型指南 - 2026年企业推荐榜
  • Springboot集成Sa-token +登录认证
  • 2026年哈尔滨冠心病室上速厂家最新推荐:哈尔滨偏瘫吞咽困难/哈尔滨偏瘫大小便失禁/哈尔滨偏瘫无法行走/选择指南 - 优质品牌商家
  • 2026年湖南循环水药剂公司综合盘点与选择参考 - 2026年企业推荐榜
  • 浏览器自动化工具 Selenium,Playwright,Puppeteer 做爬虫有哪些弊病?
  • 2026年哈尔滨偏瘫吞咽困难厂家权威推荐榜:哈尔滨冠心病心律失常/哈尔滨冠心病心肌梗死/哈尔滨冠心病心肌缺血/选择指南 - 优质品牌商家
  • 基于STM32的超声波导盲系统设计(完整项目)
  • 2026年哈尔滨冠心病心律不齐厂家最新推荐:哈尔滨偏瘫肢体瘫痪、哈尔滨偏瘫肢体麻木、哈尔滨偏瘫行动障碍选择指南 - 优质品牌商家
  • 基于STM32的智能拐杖系统设计(全部资料)
  • AI人工智能(二十九)AI错误代码批改asr.json参数异常—东方仙盟
  • 基于SpringBoot+Vue的大健康养老公寓管理系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • 基于Java+SSM+Flask音乐播放器系统(源码+LW+调试文档+讲解等)/音乐播放器/音乐系统/播放器系统/音乐软件/音频播放器/音乐播放系统/音乐设备/音乐程序/音乐应用/音乐工具
  • 基于Java+SSM+Flask怀旧唱片售卖系统(源码+LW+调试文档+讲解等)/怀旧唱片/售卖系统/复古音乐/唱片收藏/二手唱片/交易平台/音乐市场/唱片店铺/买卖唱片/音乐收藏家,
  • Java Web 大学生创新创业训练项目管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • 企业级大学新生报到系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • 多邻国 6.67.1 | 无限红心,最强外语学习应用,趣味学习外语
  • 开源在线评测系统(OJ)沙盒解决方案对比分析
  • 2026年桥梁防冻融雪剂厂家推荐:工业盐日晒盐/工业盐水处理盐/工业盐精致工业盐/工业盐融雪专用盐/选择指南 - 优质品牌商家
  • DifySandbox 完整使用手册
  • 在线评测系统(OJ)沙盒引擎设计方案
  • Photoroom 2026.09.01 | 法国大厂出品,高质量无限AI生图,最强电商作图
  • 基于SpringBoot+Vue的房屋交易系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • Java Web 高校毕业与学位资格审核系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • 2026年给排水管厂家最新推荐:公元工矿、公元工程服务、公元工装管、公元市政、公元排水、公元排第几、公元暖通选择指南 - 优质品牌商家
  • 2026年湖南循环水药剂服务商选择标准与市场深度评测 - 2026年企业推荐榜
  • 2026年评价高的桌面RFID读写器公司推荐:RFID固定式读写器、RFID工业识别、RFID工业读写器选择指南 - 优质品牌商家
  • 2026年广东艺术漆实力厂家专业评估与精选推荐 - 2026年企业推荐榜
  • 2026年双层巴士广告厂家推荐:双层车身广告/定制大巴广告/定制巴士广告/宣传车广告/巡展车广告/巡游车广告/选择指南 - 优质品牌商家