• 玩转MyBatis-Plus分页插件一:分页基本使用+方法解释+解析Page对象


    hello,我是X,已经快半年的时间没有写过博文了,这段时间里我成长了许多,现在趁着放暑假的功夫,好好的总结一下我上半年的知识储备,信息量较大,赶紧上车吧!

    在这里插入图片描述
    上车前晒一张后台系统分页的效果图:后期再出教程吧用到了element-ui框架🏭ps:期待一下吧💜

    在这里插入图片描述

    前言

    mybatis-plus官网:官网传送门
    看过官网的朋友肯定知道,这官网里对这一块的内容讲的并不是很深,讲的比较简单,这也增加了开发者的难度。
    在官网里对分页插件的讲解最重要的就是PaginationInnerInterceptor这个分页拦截器,玩过PageHelper的朋友都知道,分页它的本质就是内部封装了一个拦截器,对于满足满足条件的数据,起到一个过滤的作用🙋‍♀️这会和我们后续的自定义条件有关,毕竟也是同样的道理,你自定义一个条件来“筛选数据”,只展示满足条件的数据
    但是在学习这部分内容之前,你必须先掌握条件构造器这部分内容的知识,否则后面会看迷糊🤤🤯

    在这里插入图片描述[官网插图]

    基本使用

    1.导入依赖

    
    <dependency>
        <groupId>com.baomidougroupId>
        <artifactId>mybatis-plus-boot-starterartifactId>
        <version>${mybatis-plus.version}version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.mybatis-plus配置

    这里可自行跳过,按照你的需求来配置,不配置也可以

    # MyBatis配置
    mybatis-plus:
        # 搜索指定包别名
        typeAliasesPackage: com.**.**.domain
        # 配置mapper的扫描,找到所有的mapper.xml映射文件
        mapperLocations: classpath*:mapper/**/*Mapper.xml
        # 加载全局的配置文件
        configLocation: classpath:mybatis/mybatis-config.xml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.创建分页配置类MybatisPlusConfig

    既然是配置类,别忘了加@Configuration注解😎
    配置Bean对象

    @Configuration
    public class MybatisPlusConfig {
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor() {
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); //配置插件类
            interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); //具体到配置哪一个插件
            return interceptor;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    解析一下🙋‍♀️
    首先,配置MybatisPlus的插件类MybatisPlusInterceptor,毕竟我们要用到的是分页插件嘛
    然后就是配置你要用哪一个插件啦,这里选择的当然是我们上面提到的PaginationInnerInterceptor,这个类包含了几个参数,那么最重要的参数当然是我们的DBType参数,它的意思是数据库类型,因为不同的数据库类型实现分页的过程是不一样的,所以要指定好,在官网中也可以看到mybatis-plus支持的数据库类型有哪些:

    在这里插入图片描述
    这里我使用的是mysql,故直接设置DbType.MYSQL即可🕵️‍♀️

    4.方法剖析+测试分页[重]

    其实如果你使用了mybatis-plus,那么在mapper提供的API当中就有可以进行分页的方法selectPage,这个方法需要两个参数,一个为Page对象,另一个为wrapper对象[也就是前面说到的将符合条件的数据查询出来,为null值则表示查询全部数据],我们直接调用即可🙋‍♀️,在下一章节会使用到wrapper来自定义分页查询

    这个函数详情为

    E selectPage(E page, @Param(“ew”) Wrapper queryWrapper);
    从中我们可以知道E的类型是继承了IPage,而IPage又继承了Page类:
    在这里插入图片描述
    所以我们直接使用即可😉
    📝在这里说一下,这个方法其实本质就是在查询的sql最后加上了limit进行分页,关于limit,需要两个参数:index[当前页] pageSize[每页大小]我们打开Page对象即可看到:
    在这里插入图片描述
    current即为当前页,pageSize为每页大小,别忘了Page对象需要接收你要进行分页的实体类,后续实行分页的时候直接将这个page对象返回即可,我们可以再做一个测试,这个测试要配合前端

    示例代码[后]

    /**
     * @program: RuoYi-Vue-master
     * @description: mybatisPlus分页插件测试
     * @author: xmonster_大魔王
     * @create: 2022-07-28 11:48
     **/
    @SpringBootTest
    public class MybatisPageTest {
        @Autowired
        public ProductMapper mapper;
    
        @Test
        public void test(){
            Page<Product> page = new Page<>(1, 3);
            mapper.selectPage(page,null);
            System.out.println(page);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    测试结果

    在这里插入图片描述
    重点来看这一段SQL:
    在这里插入图片描述
    由于我们这里是从第一页开始,所以limit只有一个参数,当前页1被省略,可以到到分页插件的本质就是在sql语句最后帮我们加上limit
    page对象中还可以查看很多其他信息:
    在这里插入图片描述
    得到记录数、得到每页大小、是否有前一页等等,可以去测着玩玩🧤
    学会了的话,赶紧去学习自定义分页吧,想怎么查就怎么查😎😎传送门在下面🍋
    玩转MybatisPlus分页插件二:自定义分页函数[简单案例+复杂案例]+Demo实践常规处理操作

  • 相关阅读:
    Android源码相关面试专题
    OpenCV-Python常用操作
    LORA项目源码解读
    阿里云全链路数据治理
    Duplicate entry ‘XXX‘ for key ‘XXX.PRIMARY‘解决方案。
    Linux基本命令(四)——firewall
    Linux命令详解(10)-grep命令
    代码随想录 | Day 45 - LeetCode 70. 爬楼梯 (进阶)、LeetCode 322. 零钱兑换、LeetCode 279.完全平方数
    2024042期传足14场胜负前瞻
    《MATLAB 神经网络43个案例分析》:第36章 遗传算法优化计算——建模自变量降维
  • 原文地址:https://blog.csdn.net/Xmumu_/article/details/126024607