首页 > 其他分享 >Spring Boot中使用分页插件PageHelper

Spring Boot中使用分页插件PageHelper

时间:2022-12-01 12:13:19浏览次数:54  
标签:插件 pageNum 分页 pageSize int Spring Boot private PageHelper

分页

一、分页原理

  • 页码:pageNum

pageNum从1开始,比如第1页、第2页......

  • 每页显示的记录条数:pageSize

实际上每一次在进行分页请求发送的时候,都是要发送两个数据的:

  1. 页码pageNum要传给服务器
  2. 每页显示的记录条数pageSize也要传给服务器

假设每页显示3条数据:

第1页:limit 0, 3 (0,1,2)

第2页:limit 3, 3 (3,4,5)

第3页:limit 6, 3 (6,7,8)

第4页:limit 9, 3 (9,10,11)

......

即limit第一个参数startIndex = (pageNum - 1) * pageSize

假设每页显示pageSize条记录:

第pageNum页:limit (pageNum - 1) * pageSize, pageSize

二、Spring Boot中使用分页插件PageHelper

第一步:引入依赖

<!--Pagehelper-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.4.3</version>
</dependency>

第二步:使用

使用PageHelper.startPage 静态方法调用startPage

特点:

  1. 静态方法,传递两个参数(当前页码pageNum,每页查询条数pageSize)
  2. 使用pageHelper 分页的时候,不再关注分页语句
  3. 查询全部的语句,自动的对PageHelper.startPage 方法下的第一个SQL查询进行分页
PageHelper.startPage(pageNum, pageSize);
// 后面一定是紧跟查询语句
// 把目录列表中所有的数据查询出来
List<Category> categoryList = categoryMapper.selectByExample(null);
  • service层代码
/**
* 分页查询目录列表
* @param pageNum 页码
* @param pageSize 页面大小
* @return
*/
@Override
public PageInfo selectCategoryByList(Integer pageNum, Integer pageSize) {
    PageHelper.startPage(pageNum, pageSize);
    // 把目录列表中所有的数据查询出来
    List<Category> categoryList = categoryMapper.selectByExample(null);
    // 获取分页信息对象
    PageInfo<Category> info = new PageInfo<>(categoryList, pageSize);

    return info;
}
  • controller层
/**
* 商品分类列表(平铺)
* @param pageNum 页码
* @param pageSize 每页的大小
* @return
*/
@ApiOperation("商品分类列表(平铺)")
@GetMapping("/admin/category/list")
public R categoryListForAdmin(@RequestParam("pageNum") Integer pageNum, @RequestParam("pageSize") Integer pageSize) {
        PageInfo pageInfo = categoryService.selectCategoryByList(pageNum, pageSize);

        return R.success(pageInfo);
    }
}

三、pageInfo对象

public class PageInfo<T> implements Serializable {
private static final long serialVersionUID = 1L;
    
//当前页
private int pageNum;
    
//每页的数量
private int pageSize;
    
//当前页的数量
private int size;
    
//由于startRow 和endRow 不常用,这里说个具体的用法
//可以在页面中"显示startRow 到endRow 共size 条数据"
//当前页面第一个元素在数据库中的行号
private int startRow;
    
//当前页面最后一个元素在数据库中的行号
private int endRow;
    
//总记录数
private long total;
    
//总页数
private int pages;
    
//结果集
private List<T> list;
    
//前一页
private int prePage;
    
//下一页
private int nextPage;
    
//是否为第一页
private boolean isFirstPage = false;
    
//是否为最后一页
private boolean isLastPage = false;
    
//是否有前一页
private boolean hasPreviousPage = false;
    
//是否有下一页
private boolean hasNextPage = false;
    
//导航页码数
private int navigatePages;
    
//所有导航页号
private int[] navigatepageNums;
    
//导航条上的第一页
private int navigateFirstPage;
    
//导航条上的最后一页
private int navigateLastPage;
}

标签:插件,pageNum,分页,pageSize,int,Spring,Boot,private,PageHelper
From: https://www.cnblogs.com/keyongkang/p/16941031.html

相关文章

  • SpringBoot使用restTemplate远程访问时报错
    错误场景SpringBoot使用restTemplate远程访问时报错java.lang.IllegalStateException:Noinstancesavailableforxxx解决方案这个报错一般会出现在使用了负载均衡,如:......
  • springmvc工作流程
    springmvc工作原理图精简版:springmvc工作流程1、用户向服务端发送一次请求,这个请求会先到前端控制器DispatcherServlet(也叫中央控制器)。2、DispatcherServlet接收......
  • boot目录满了,如何解决?
    目录问题描述解决方法一:删除不用的内核解决方法二:挂载问题描述/boot/是Linux系统的启动盘,用于存放启动时的引导文文件,如内核等在进行yumupdate等操作时,内核也会随着更......
  • SpringBoot 3.0 新特性,内置声明式 HTTP 客户端
    httpinterface从Spring6和SpringBoot3开始,Spring框架支持将远程HTTP服务代理成带有特定注解的Javahttpinterface。类似的库,如OpenFeign和Retrofit仍然......
  • RabbitMQ 3.7.18安装延时插件rabbitmq-delayed-message-exchange后启动报错
    环境:安装请参考:https://blog.csdn.net/qq_37487520/article/details/126079651https://www.cnblogs.com/myifb/articles/16638251.html启用插件时,不用写插件版本号:r......
  • 使用编译器aarch64-xilinx-linux-gcc,导致uboot编译出现错误“aarch64-xilinx-linux-ld
    KV260PetaLinuxBSP的environment-setup-cortexa72-cortexa53-xilinx-linux会导入aarch64-xilinx-linux系列工具,并设置CROSS_COMPILE为aarch64-xilinx-linux-。因此使用......
  • IDEA神器插件-40款
    IDEA插件安装步骤IDEA里面,选择打开File-->Settings-->Plugins在Plugins里面,可以搜索需要的插件(下面的标题),然后安装如下图:AceJump全栈必备,作为一个全能......
  • SpringBoot启动流程
    run方法启动时传入了当前类ContractApplication.class,传入当前类的作用主要是为了解析当前类上面的注解(不一定传递当前类,也可以自己写一个类,在写的类上添加对应的注解)......
  • SpringBoot+Bootstrap+Thymeleaf+Restful 实现图书商城管理
    课程名称:企业项目实训II设计题目:大学当图书商城已知技术参数和设计要求:1.问题描述(功能要求):1.1顾客端1)注册登录:游客可浏览所有图书,只有注册用户才能添加购物车、下订单......
  • Spring Cloud Azure 适配器参考
    微软AzureAzure适配器启动Spring云函数上下文,并从Azure引导函数调用框架到用户函数中,必要时使用Spring引导配置。AzureFunctions具有相当独特和侵入性编程模型,涉......