SpringBoot 整合 MyBatis-Plus 分页插件完整教程 SpringBoot 整合 MyBatis-Plus 分页插件完整教程一、前置说明MP 分页必须手动注册分页拦截器不配置会出现分页 total 总条数为 0、不分页的问题适配 MP 3.5 新版写法MybatisPlusInterceptor 统一插件入口废弃旧版 PaginationInterceptor支持 MySQL、Oracle 等多种数据库可指定数据库类型优化分页 SQL。二、第一步编写分页配置类新建配置包com.config创建MyBatisPlusConfig.javajava运行package com.config; 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; Configuration public class MyBatisPlusConfig { /** * 注册MyBatis-Plus统一拦截器 */ Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor new MybatisPlusInterceptor(); // 分页插件 PaginationInnerInterceptor pageInterceptor new PaginationInnerInterceptor(); // 可选设置数据库类型自动适配分页语法MySQL可不写 // pageInterceptor.setDbType(DbType.MYSQL); // 可选设置单页最大条数防止恶意超大分页查询 pageInterceptor.setMaxLimit(1000L); interceptor.addInnerInterceptor(pageInterceptor); return interceptor; } }参数说明setMaxLimit(1000L)限制单次查询最多 1000 条避免LIMIT 1,100000深度分页拖垮数据库DbType.MYSQL数据库类型MP 自动生成分页语句多数据源场景建议显式指定。三、分页使用方式Service 层标准用法1. 分页对象构造PageT两个参数当前页码、每页条数java运行// 第1页每页10条 PageOrderInfo page new Page(1, 10);2. 配合 LambdaQueryWrapper 条件分页java运行Autowired private OrderInfoService orderInfoService; public PageOrderInfo getOrderPage(Integer pageNum, Integer pageSize) { // 1. 分页对象 PageOrderInfo page new Page(pageNum, pageSize); // 2. 查询条件 LambdaQueryWrapperOrderInfo wrapper new LambdaQueryWrapper(); wrapper.eq(OrderInfo::getIsDelete, 0) .orderByDesc(OrderInfo::getCreateTime); // 3. 执行分页查询 PageOrderInfo pageResult orderInfoService.page(page, wrapper); return pageResult; }3. 返回分页对象常用属性java运行// 当前页数据列表 ListOrderInfo records pageResult.getRecords(); // 总数据条数 long total pageResult.getTotal(); // 总页数 long pages pageResult.getPages(); // 当前页码 long current pageResult.getCurrent(); // 每页条数 long size pageResult.getSize();四、Mapper 层直接分页不推荐优先 Servicejava运行PageOrderInfo page new Page(1,10); LambdaQueryWrapperOrderInfo wrapper new LambdaQueryWrapper(); PageOrderInfo pageResult orderInfoMapper.selectPage(page, wrapper);五、自定义 XML 多表联查分页原生 SQL 分页兼容1. Mapper 接口java运行PageOrderVO selectOrderPage(PageOrderVO page, Param(name) String name);2. XML 不需要手写 LIMITMP 自动拼接分页语句xmlselect idselectOrderPage resultTypecom.vo.OrderVO SELECT o.*, p.product_name FROM order_info o LEFT JOIN product p ON o.product_id p.id where if testname ! null and name ! p.product_name LIKE CONCAT(%,#{name},%) /if o.is_delete 0 /where ORDER BY o.create_time DESC /select六、常见问题与解决方案问题 1分页查询 total 总条数为 0原因未配置MybatisPlusInterceptor分页插件 解决复制上方配置类确保被 Spring 扫描到加Configuration。问题 2深度分页 LIMIT 100000,10 很慢优化配置setMaxLimit限制最大单页条数大分页使用主键偏移分页替代普通分页。问题 3XML 自定义 SQL 分页失效方法第一个参数必须是PageT不要自己手写limit会重复拼接导致语法报错。问题 4分页插件与乐观锁 / 防全表更新插件共存直接叠加添加内部拦截器即可java运行interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());七、Controller 接收分页参数标准示例java运行GetMapping(/order/page) public ResultPageOrderInfo orderPage( RequestParam(defaultValue 1) Integer pageNum, RequestParam(defaultValue 10) Integer pageSize ) { PageOrderInfo pageData orderInfoService.getOrderPage(pageNum, pageSize); return Result.success(pageData); }

相关新闻

最新新闻

Kettle 7.1实战:从环境搭建到数据同步的性能调优

Kettle 7.1实战:从环境搭建到数据同步的性能调优

简介:Kettle 7.1 是一款成熟的开源 ETL 工具,后更名为 Pentaho Data Integration,由 Java 开发、支持跨平台运行,适合数据工程师、BI 开发人员及运维人员完成数据抽取、转换与加载。其核心亮点是无需编码、拖拽式开发数据管道&…

2026/9/1 14:01:59
opencode-anthropic-auth诞生记:SST团队为何要为OpenCode做这个认证插件

opencode-anthropic-auth诞生记:SST团队为何要为OpenCode做这个认证插件

opencode-anthropic-auth诞生记:SST团队为何要为OpenCode做这个认证插件 【免费下载链接】opencode-anthropic-auth 项目地址: https://gitcode.com/GitHub_Trending/op/opencode-anthropic-auth opencode-anthropic-auth 是 SST 团队为终端 AI 助手 OpenCo…

2026/9/1 14:01:59
DeepSeek Harness:一切皆插件的AI工作流编排层

DeepSeek Harness:一切皆插件的AI工作流编排层

DeepSeek Harness 这个项目,社区里一般简称 dsh,它不是一个简单的 DeepSeek 客户端,而是一套把模型能力、工具调用、任务流程全部做成插件的 AI 工作流编排层。很多人第一次看到“一切皆插件”这句话,第一反应是概念炒作&#xff…

2026/9/1 14:01:59
Kali Linux 2026 保姆级指南:从安装部署到核心工具实战

Kali Linux 2026 保姆级指南:从安装部署到核心工具实战

如果你对网络安全、渗透测试或系统安全评估感兴趣,那么 Kali Linux 是你绕不开的一个名字。它不是普通的操作系统,而是一个由 Offensive Security 团队维护的、集成了数百种安全工具的“武器库”。从信息收集、漏洞扫描、密码破解到无线网络分析&#xf…

2026/9/1 14:01:59
996 GT2-R双涡轮与勒芒遥测:从车载视频到圈速数据分析

996 GT2-R双涡轮与勒芒遥测:从车载视频到圈速数据分析

一段保时捷996 Bi-Turbo GT2-R PSI的勒芒经典车赛车载单圈视频,不同人读出的信息量完全不同。普通观众看到的是发动机轰鸣、连续降挡补油和方向盘快速修正;车辆工程师看到的则是每个刹车点上的轮胎抓地余量、出弯给油瞬间的涡轮响应、长直道尾端的风阻和…

2026/9/1 14:01:59
小米秋招测试开发笔试题解构:考点拆解与避坑实战指南

小米秋招测试开发笔试题解构:考点拆解与避坑实战指南

先说结论:如果你正在准备大厂测试开发岗的校招笔试,2022年小米秋招这道卷子值得认真刷一遍,尤其是里面把“测试理论基础、工程代码能力、产品敏感度”三块内容揉在一起的考法,跟不少大厂近两年的出题方向很像。这场笔试刷下来&…

2026/9/1 13:56:59