MyBatis-Plus 分页功能详解

2022年电赛E题声源定位跟踪系统 电赛声源定位 阅读详情
AI摘要

本文详细介绍了MyBatis-Plus的分页功能。先说明了MyBatis-Plus是MyBatis增强工具,分页功能常用。接着阐述配置分页插件、基本分页查询、自定义SQL分页、分页结果处理和优化等内容,还提及分页失效和性能问题的解决办法,最后总结其分页功能简单易用。

MyBatis-Plus 分页功能详解

1. 前言

MyBatis-Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,简化开发、提高效率。其中分页功能是日常开发中非常常用的功能,本文将详细介绍 MyBatis-Plus 的分页功能使用。

2. 配置分页插件

首先需要在 Spring Boot 项目中配置分页插件:

@Configuration
public class MybatisPlusConfig {

    /**
     * 分页插件配置
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

3. 基本分页查询

3.1 使用 Page 对象

@GetMapping("/page")
public R<IPage<User>> page(@RequestParam(defaultValue = "1") int current, 
                          @RequestParam(defaultValue = "10") int size) {
    // 创建分页对象
    Page<User> page = new Page<>(current, size);
    // 执行分页查询
    IPage<User> userPage = userService.page(page);
    return R.ok(userPage);
}

3.2 带条件的分页查询

@GetMapping("/pageByCondition")
public R<IPage<User>> pageByCondition(@RequestParam(defaultValue = "1") int current,
                                     @RequestParam(defaultValue = "10") int size,
                                     String name) {
    Page<User> page = new Page<>(current, size);
    LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
    wrapper.like(StringUtils.isNotBlank(name), User::getName, name);
    IPage<User> userPage = userService.page(page, wrapper);
    return R.ok(userPage);
}

4. 自定义SQL分页

4.1 Mapper 接口

public interface UserMapper extends BaseMapper<User> {
    
    /**
     * 自定义分页查询
     * @param page 分页对象
     * @param state 状态
     * @return 分页结果
     */
    IPage<User> selectPageByCustom(@Param("page") Page<User> page, @Param("state") Integer state);
}

4.2 XML 映射文件

<select id="selectPageByCustom" resultType="com.example.entity.User">
    SELECT * FROM user 
    WHERE state = #{state}
</select>

4.3 使用自定义分页

@GetMapping("/customPage")
public R<IPage<User>> customPage(@RequestParam(defaultValue = "1") int current,
                                @RequestParam(defaultValue = "10") int size,
                                Integer state) {
    Page<User> page = new Page<>(current, size);
    IPage<User> userPage = userMapper.selectPageByCustom(page, state);
    return R.ok(userPage);
}

5. 分页结果处理

MyBatis-Plus 的分页结果 IPage 对象包含以下常用属性:

  • records: 当前页的数据列表
  • total: 总记录数
  • size: 每页显示条数
  • current: 当前页
  • pages: 总页数

可以对这些数据进行处理后再返回给前端:

@GetMapping("/pageWithProcess")
public R<Map<String, Object>> pageWithProcess(@RequestParam(defaultValue = "1") int current,
                                            @RequestParam(defaultValue = "10") int size) {
    Page<User> page = new Page<>(current, size);
    IPage<User> userPage = userService.page(page);
    
    Map<String, Object> result = new HashMap<>();
    result.put("list", userPage.getRecords());
    result.put("total", userPage.getTotal());
    result.put("pageSize", userPage.getSize());
    result.put("currentPage", userPage.getCurrent());
    result.put("totalPages", userPage.getPages());
    
    return R.ok(result);
}

6. 分页优化

6.1 不查询总记录数

对于大数据量的分页,如果不需要知道总记录数,可以设置不查询 count:

@GetMapping("/pageWithoutCount")
public R<IPage<User>> pageWithoutCount(@RequestParam(defaultValue = "1") int current,
                                     @RequestParam(defaultValue = "10") int size) {
    Page<User> page = new Page<>(current, size, false);
    IPage<User> userPage = userService.page(page);
    return R.ok(userPage);
}

6.2 最大单页限制

可以配置分页插件的最大单页限制:

@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
    // 设置最大单页限制数量,默认 500 条,-1 不受限制
    paginationInnerInterceptor.setMaxLimit(1000L);
    interceptor.addInnerInterceptor(paginationInnerInterceptor);
    return interceptor;
}

7. 常见问题

7.1 分页失效

如果发现分页没有生效,请检查:

  1. 是否配置了分页插件
  2. 分页参数是否正确传递
  3. 是否在分页查询前创建了 Page 对象

7.2 性能问题

对于大数据量表的分页查询,建议:

  1. 使用索引优化查询
  2. 对于深度分页,考虑使用游标分页等方式
  3. 合理设置分页大小

8. 总结

MyBatis-Plus 的分页功能简单易用,通过配置分页插件后,可以方便地实现各种分页需求。本文介绍了基本分页查询、带条件分页、自定义SQL分页等多种使用方式,以及分页结果处理和性能优化建议。

希望本文对你理解和使用 MyBatis-Plus 的分页功能有所帮助!

团结引擎+OpenHarmony 记录 (持续更新中) 获取不到的原因是因为二者不在同一个线程中,所以数据没有同步。而 globalThis.context 数据进行了同步。(TuanjieMainWorkerHandler.ts中可以看到)在进行绘制 UI 的时候 ,如果组件有 Native API 就可能不会显示出来,例如 web 控件就不能展示出来,刚加上权限的时候 会报错 因为缺少 reason ,添加上就不会报错了。只有纯 UI 控件是可以展示出来的,注释掉 web控件后就可以。 阅读详情

相关推荐

学习STM32的无人机控制

设计并实现无人机控制系统,使用STM32单片机进行控制。无人机控制系统主要包括飞行控制、姿态控制、定位导航等功能。以下是一个基于STM32的无人机控制系统的代码案例。以上是一个基于STM32的无人机控制系统的代码案例,包括飞行控制、姿态控制和定位导航等功能。请根据实际情况进行修改和完善。

qq_67153941的博客 838

如何使用Mybatis-plus进行分页

利用mybatis-plus进行分页!!!

AALouisaa的博客 9万+

从原理图到PCB:手把手教你绘制DRV8301驱动板(附完整代码与避坑指南)

本文详细介绍了如何从原理图设计到PCB布局,手把手教你绘制DRV8301驱动板,特别适用于FOC(磁场定向控制)系统开发。内容涵盖元器件选型、电源树架构设计、栅极驱动电路、PCB布局技巧、焊接调试及代码配置,并附有完整代码与常见问题避坑指南,帮助工程师快速掌握DRV8301驱动板的设计与优化。

weixin_33716941的博客 396

mybatis-plus分页方式

mybatis-plus分页方式

aiwokache的博客 3万+

TSMaster如何用珠海创芯CAN卡实现高效CAN通信(附完整驱动安装指南)

本文详细介绍了如何使用TSMaster软件与珠海创芯CAN卡实现高效CAN通信,包括驱动安装、系统配置、ControlCAN.dll替换及TSMaster集成配置等关键步骤。通过实战指南和故障排除技巧,帮助工程师快速搭建稳定可靠的CAN通信测试环境,适用于汽车电子和工业控制等领域。

weixin_29201859的博客 481

IPsec (主模式,野蛮模式)

IPsec vpn的主模式和野蛮模式

七汣的博客 3415

【MyBatis Plus】使用 MyBatis Plus 完成分页功能,以及通用分页实体的实现

使用 MyBatis Plus 完成分页功能,以及通用分页实体的实现

qq_61635026的博客 2万+

华为非AI方向0603笔试真题-爆破小游戏(详细思路+多语言题解)

华为非AI方向0603笔试第二题【爆破小游戏】,提供详细思路讲解以及代码实现。

qq_45776114的博客 358

【Mybatis-Plus】分页简单使用

【Mybatis-Plus】分页简单使用

人类所有真实的快乐,一定是恒久的努力 9万+

WPF中使用TreeView封装组合控件TreeView+DataGrid

wpf的功能非常强大,很多控件都是原生的,但是要使用TreeView+DataGrid的组合,就需要我们自己去封装实现。功能如上图所示, 目前基本上把常用的样式都实现了,购买源码后,可以自行修改样式。本文源码效果如下,(搞了好几天,的确有难度,所以源码也收费,便宜,赚点辛苦费)第一种:技术的选择是TreeView(也就是本文的演示)。这2个图都是第三方控件自带的,并且都是收费使用。首先说明一下,实现上面的效果,有3种方法。本文演示的是使用TreeView的实现。第二种:技术的选择是DataGrid。

故里2130 1650

12-RK平台U-Boot启动流程

先看概述,把这一章要回答的问题摆出来,带着问题听。RK 特有的 BootROM -> MiniLoader -> SPL -> U-Boot -> Kernel。这是因为 RK 平台使用闭源的 DDR 初始化固件,需要通过 MiniLoader 来加载和运行。为什么多一层?这是 RK 平台的特殊性决定的。RK 平台使用闭源的 DDR 初始化固件,这段代码 Rockchip 不开源,只能以二进制形式提供,它需要一个载体来加载和运行,这个载体就是 MiniLoader。

内核笔记 1147

mybatis-plus实现分页(好用)

一次学会mybatis-plus的分页方法!!!

ProBaiXiaodi的博客 1万+

Android 13.0 设置默认屏幕亮度百分比

在13.0的系统ROM产品开发中,在一些产品开发中,对于设置默认屏幕亮度和屏幕亮度百分比的功能,在开发中也是常见的功能,在10.0的平台设置可能有一些不同,一般的都是在SettingProvider中设置就可以了 在11.0以后的系统中设置默认屏幕亮度的方法就不同了,接下来具体分析功能的实现

安卓兼职framework和app工程师的博客 1560

Java 分页指南:MyBatis 和 MyBatis-Plus 分页功能详解

RowBounds 是 MyBatis 提供的一个简单分页工具类,可以在 SQL 执行时传入分页参数。

ChinaTj001的博客 2322

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

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

SpringBoot集成MyBatis-Plus实现分页功能详解

Springboot mybatis-plus分页查询配置

奔跑吧,兄弟 352

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

MyBatis-Plus 核心功能详解:CRUD、条件构造器、分页与乐观锁实战

在Java后端开发中,持久层框架的选择直接影响开发效率与代码质量。MyBatis-Plus作为一款增强工具,在保留MyBatis原生机制的同时,通过内置BaseMapper与条件构造器大幅简化了CRUD操作,让开发者无需手写重复SQL。其核心价值在于动态条件查询、分页插件、逻辑删除与乐观锁等能力的自动化处理,可有效降低模板代码量并提升数据操作的安全性。这些能力广泛应用于用户管理、订单系统等典型业务模块,尤其适合需要快速迭代的中小型项目。本文围绕这些关键技术点展开实践讲解,并分享常见坑点与优化建议,帮助开发者

weixin_32822843的博客 238

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

MyBatis-Plus ——CRUD实战

简化开发:内置CRUD方法,无需编写XML映射文件;功能丰富:支持分页、逻辑删除、自动填充等实用特性;无缝集成:与SpringBoot等框架完美兼容,引入后不影响现有工程。

2302_79926174的博客 1232

MyBatis-Plus

摘要:MyBatis-Plus 是一个强大的 MyBatis 增强工具,专注于简化单表操作并提升开发效率。其核心特性包括无侵入设计、自动 CRUD 操作、智能条件构造器和多种插件支持(分页、乐观锁等)。在 Spring Boot 项目中,通过简单配置即可快速实现基础数据操作,支持代码生成器和逻辑删除等实用功能。对于复杂多表查询,建议结合原生 MyBatis 实现。MyBatis-Plus 特别适合需要快速开发后台管理系统和减少重复 SQL 编写的场景,同时保持与 MyBatis 原生功能的兼容性。

Java_soul_GJH的博客 1163

MyBatis-Plus使用详解

MyBatis是一款优秀的需手动编写大量基础CRUD代码,复杂查询需手写XML,开发效率受限。

2301_77021913的博客 3051

SpringBoot+Mybatis-plus实现分页查询(一看就会)

首先我们需要引入分页插件配置,然后创建DTO和VO,DTO包含我们需要的进行查询的字段,继承PageDto,VO是返回信息的对象,这样做不会影响我们创建的实体类。接下来就是service接口和serviceImpl实现类的创建,在实现类里面编写我们分页的逻辑然后三部分结构,引入Page实例、查询语句编写、page方法进行查询并复制给VO对象用于返回信息。

q543147087的博客 360

MyBatis-Plus笔记-分页功能

mybatis-plus分页功能详解

m0_58684211的博客 1560

Mybatis-plus分页查询详解(spring与springboot)实战篇

基于spring、springboot的mybatis-plus的分页查询实战篇

m0_57816620的博客 982
上一篇: VUE2创建项目
下一篇: SpringBoot + Vue 实现云端图片上传与回显(基于OSS等云存储)
csdn_HPL
博客等级 码龄6年 171粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值