首页 > 其他分享 >MP-分页插件配置以及实现原理

MP-分页插件配置以及实现原理

时间:2022-08-18 15:11:38浏览次数:47  
标签:10 插件 分页 limit MP table select name

1. MP配置类

@Configuration
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        
        //添加分页
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }

}

具体实现:

  @Override
    public R<Page> page(int page, int pageSize, String name) {
        log.info("page = {}  pageSize = {} name = {}",page,pageSize,name);
        //构造分页构造器
        Page pageInfo=new Page(page,pageSize);
        //构造条件构造器
        LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
        //在满足不为空的条件下再去添加
        queryWrapper.like(StringUtils.isNotBlank(name), Employee::getUsername, name);
        //排序
        queryWrapper.orderByDesc(Employee::getUpdateTime);
        
        //Mapper分页查询方法
        employeeMapper.selectPage(pageInfo, queryWrapper);
        return R.success(pageInfo);
    }

1.2 分页实现原理

SQL语句中使用limit关键字来实现查询前几条或者中间某几行数据

select * from table_name limit [offset,] rows

参数说明:

offset:指定第一个返回记录行的偏移量(即从哪一行开始返回),注意:初始行的偏移量为0。

rows:返回具体行数。

总结:如果limit后面是一个参数,就是检索前多少行。如果limit后面是2个参数,就是从offset+1行开始,检索rows行记录。

select * from table_name limit 10;//检索前10行记录,从0-9
select * from table_name limit 5 ,10;
//因为是第0行开始,所以如果偏移量是5,起始是从第6条记录开启,检索10行记录,即:检索记录行 6-15

      客户端通过传递page(页码),pageSize(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和我们的需求不一样,所以就需要我们根据实际情况去改写适合我们自己的分页语句,具体的分析如下:

比如:

      查询第1条到第10条的数据的sql是:select * from table limit 0,10; 对应着就是:

select * from table limit (1-1)*10,10;

      查询第10条到第20条的数据的sql是:select * from table limit 10,10; 对应着就是:

select * from table limit (2-1)*10,10;

      查询第20条到第30条的数据的sql是:select * from table limit 20,10;对应着就是:

select * from table limit (3-1)*10,10;

SQL分页计算:

select * from table limit (page-1)*pageSize,pageSize; 

标签:10,插件,分页,limit,MP,table,select,name
From: https://www.cnblogs.com/ggzs/p/16598689.html

相关文章

  • Vue开发常见插件
    Vue项目无论是前端项目还是移动端项目,优先推荐使用VSCode作为编译工具。VSCode从使用的角度来说没有IDEA用着方便,但是从Vue的支持程度来说,还是不错的,所以优先推荐大家使......
  • 博客园定制皮肤教程_Cnblogs-Theme-SimpleMemory
    目录前言链接参考笔录草稿步骤1.注册博客园2.申请开通博客园3.申请支持JS权限4.配置皮肤做好以上步骤后,开始源码配置前言记录博客园皮肤设置。链接皮肤源码及......
  • [学习笔记] Berlekamp-Massey 算法
    都2202年了,现代OIer早该会会了!参考了此博客。引入Berlekamp-Massey算法,又称为BM算法,其可以在\(O(n^2)\)时间内求解一个长度为\(n\)的数列的最短线性递推式。......
  • 安装油猴tampermonkey脚本+Greasy Fork及使用教程
    google浏览器安装tampermonkey扩展插件下载地址:链接:https://pan.baidu.com/s/1LBRYHcdkZxfFtBKwMagcmw提取码:nu14安装开启扩展插件:GreasyFork脚本脚本下载......
  • 两行命令搞定M3U8和MP4文件互转
    用MP4中制作M3U8:ffmpeg-imyVideo.mp4-ccopy-bsfh264_mp4toannexboutput.tsffmpeg-ioutput.ts-ccopy-map0-fsegment-segment_listplaylist.m3u8-seg......
  • 小白快速在cenos7系统搭建mongodb数据库及compass远程连接
    前言:本人的cenos系统是在腾讯云部署的云服务器,为个人网站提供服务,这里说明一下安装数据库遇到的问题和折腾记录。远程连接云服务器:这一步使用本地系统的可以跳过。之前......
  • Dynamic CRM插件程序集中引入第三方dll合并打包
    有时候在插件程序集不可避免的需要使用第三方的dlll但crm插件平台注册时只能注册一个dll即项目自身的dll第三方的dll无法正常在注册后使用查找官方资料找到如下方法......
  • 「学习笔记」Z 函数(扩展 KMP)
    前置芝士:KMP算法正文本文涉及的字符串下标以\(0\)为起点。对于个长度为\(n\)的字符串\(s\)。定义函数\(z(i)\)表示\(s\)和\(s_{i\simn-1}\)(即以\(s_i\)开......
  • Vue学习笔记4-项目开发规范及插件
    Vue学习笔记4-项目开发规范及插件一、安装插件首先搜索安装ESLint和Prettier这两个插件。这里对开发规范的配置仅配置ESLint,对代码格式的配置仅配置Prettier,用于代......
  • 认识Vue扩展插件
    众所周知,在Vue开发中,实现一个功能可以有很多种方式可以选择,这依赖于Vue强大的功能(指令、混合、过滤等)Vue插件插件通常用来为Vue添加全局功能。插件的功能范围没......