MyBatisPlus从零到一:快速入门与核心功能详解(6)

米饭9个月前行业资讯820

四、分页插件

MybatisPlus 提供了很多的插件功能,进一步拓展其功能。目前已有的插件有:


PaginationInnerInterceptor:自动分页

TenantLineInnerInterceptor:多租户

DynamicTableNameInnerInterceptor:动态表名

OptimisticLockerInnerInterceptor:乐观锁

IllegalSQLInnerInterceptor:sql 性能规范

BlockAttackInnerInterceptor:防止全表更新与删除

这里我们以分页插件来学习插件的用法。


在未引入分页插件的情况下,MybatisPlus是不支持分页功能的,IService和BaseMapper中的分页方法都无法正常起效。所以,我们必须配置分页插件。


4.1 配置分页插件:

在项目中新建一个配置类:

image-20241110093749899

其代码如下:

@Configuration
public class MybatisConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        //1. 初始化核心插件
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //2. 添加分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        //3. 返回核心插件
        return interceptor;
    }
}

4.2 使用演示:

核心在于 Page 类,下面是 page 类的所有属性,既有分页查询所需的条件,也有分页查询返回的结果。

image-20241110095028300

注意:分页查询传递的参数 page 和接收的 page 是同一个对象。

@Test
void testPageQuery(){
    // 1.分页查询,new Page()的两个参数分别是:页码、每页大小
    Page<User> p = userService.page(new Page<>(2, 2));
    // 2.总条数
    System.out.println("total = " + p.getTotal());
    // 3.总页数
    System.out.println("pages = " + p.getPages());
    // 4.数据
    List<User> records = p.getRecords();
    records.forEach(System.out::println);
}

效果如下:

573061b9c41af84dd3107ba945280968.png

这里用到了分页参数,Page,即可以支持分页参数,也可以支持排序参数。常见的 API 如下:


其中 OrderItem 的第二个参数,如果为 true 表示为升序,如果为 false 表示为降序。page 可以添加多个排序规则,当第一个排序规则相等时,采用第二个排序规则,以此类推。

int pageNo = 1, pageSize = 5;
// 分页参数
Page<User> page = Page.of(pageNo, pageSize);
// 排序参数, 通过OrderItem来指定
page.addOrder(new OrderItem("balance", false));
//.....可以有很多个
page.addOrder(....)
// 进行分页查询
userService.page(page);

参考文献:

  • 黑马程序员


  • 本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!  

    云掣基于多年在运维领域的丰富时间经验,编写了《云运维服务白皮书》,欢迎大家互相交流学习:

    《云运维服务白皮书》下载地址:https://fs80.cn/v2kbbq

    想了解更多大数据运维托管服务、数据库运维托管服务、应用系统运维托管服务的的客户,欢迎点击云掣官网沟通咨询:https://yunche.pro/?t=shequ

相关文章

Docker:技术架构的演进之路(上)

Docker:技术架构的演进之路(上)

前言一、前言技术架构是指在软件开发和系统构建中,为了满足业务需求和技术要求,对系统的整体结构、组件、接口、数据流以及技术选型等方面进行的详细设计和规划。它是软件开发过程中的重要组成部分,为开发团队提供...

SRE(站点可靠性工程)介绍

SRE(站点可靠性工程)介绍

概述站点可靠性工程(SRE)是 IT 运维的软件工程方案。SRE 团队使用软件作为工具,来管理系统、解决问题并实现运维任务自动化。SRE 执行的任务以前通常由运维团队手动执行,或者交给使用软件和自动化...

Spring AOP 实战指南:从入门到精通(4)

Spring AOP 实战指南:从入门到精通(4)

3.5 切点表达式:上面的代码中,我们一直在使用切点表达式来描述切点。下面我们来介绍一下切点表达式的语法。切点表达式常见有两种表达方式:execution:根据方法的签名来匹配。@annotation...

Docker:LXC容器操作实战

Docker:LXC容器操作实战

前言通过LXC来完成容器的创建、体会什么是容器。利用LXC容器技术来隔离特定的应用,提供虚拟执行环境,从而优化资源管理和部署效率。什么是LXC?LXC为Linux Container的简写,是一种可以...

Linux 配置Java环境(一)

Linux 配置Java环境(一)

一、配置Java环境1、查看系统是否有java环境输入指令java -version回车即可如图表示Linux系统有自带的jdk,但是这并不是我们想要的,所以得卸载2、卸载系统自带的jdk1 .找到具...

Spring AMQP与RabbitMQ深度整合指南:从基础到高级应用(3)

Spring AMQP与RabbitMQ深度整合指南:从基础到高级应用(3)

3.5 声明交换机和队列:在之前我们都是基于RabbitMQ控制台来创建队列、交换机。但是在实际开发时,队列和交换机是程序员定义的,将来项目上线,又要交给运维去创建。那么程序员就需要把程序中运行的所有...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。