Spring Boot项目通用功能之《通用分页》

本文介绍了如何在Spring Boot项目中使用PageHelper插件实现通用分页功能,详细解析了分页参数和响应结果,以及PageHelper的引入、核心类的使用,并通过分页查看用户功能为例,展示了其实现过程和工作原理。
摘要由CSDN通过智能技术生成

前言

上一篇文章中我们说了下怎么去使用《通用Mapper》来实现对单表的增删改查功能,本篇我就带你学习下,如何使用PageHelper插件来实现对单表的分页功能,至此你就不需要再自己去写一大堆的mapper.xml代码去实现单表基础的功能了(其实我们绝大部分的业务都是基于单表操作的)。

实现目标

先来看一下我们约定的分页参数和响应结果的样子。
分页请求参数:

localhost:8080/zhuma-demo/users?pageNum=1&pageSize=5&orderBy=create_time desc

响应结果:

{
   
    "code": 1,
    "msg": "成功",
    "data": {
   
        "pageNum": 1,
        "pageSize": 5,
        "total": 12,
        "pages": 3,
        "list": [
            {
   
                "id": "0c13ec7a-0309-11e8-9139-94de80fdfd41",
                "nickname": "小竹马11",
                "gender": "MALE",
                "type": "NORMAL",
                "status": "ENABLED",
                "createTime": 1517019792000,
                "updateTime": 1517019792000
            },
            {
   
                "id": "09c70b22-0309-11e8-9139-94de80fdfd41",
                "nickname": "小竹马10",
                "gender": "MALE",
                "type": "NORMAL",
                "status": "ENABLED",
                "createTime": 1517019788000,
                "updateTime": 1517019788000
            },
            //省略
        ]
    }
}

备注

  • 参数pageNum代表当前页号,pageSize代表一页的数量。
  • 参数orderBy用来控制排序(由两部分组成:第一个值要排序的字段,第二个是排序方式),其实这个跟mysql的order by语句语法是一样的。
  • 返回结果中total代表记录总数,pages代表总页数。
  • 返回结果中list是数据列表,当没有查询到数据时,返回[],空数组。

我们先演示了下做该分页功能后最终要实现的目标或者说效果,下面就让我们一起学习下,该怎么完成上述的分页功能吧。

说说分页

通常设计分页接口参数,常用的有两种方式用两个参数两控制分页:

  • pageNum和pageSize
  • offect和limit

他们的换算关系式:offect = (pageNum - 1) * pageSize; limit=pageSize,所以两种参数方式都是OK也都是很好用的,那我们今天使用的就是pageNum和pageSize这种参数形式,分别代表当前页号和一页的数量,这种参数也更方便理解。然后我们在具体讲解怎么做通用分页。

实现思路

1. 首先引入jar包(使用pageHelper插件进行分页):
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.2</version><!--使用前请获取最新版本-->
</dependency>

如果是spring boot项目,可以直接引入:

		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>1.2.3</version>
		</dependency>

Page-helper插件github地址:https://github.com/pagehelper/Mybatis-PageHelper/

2. 几个核心类

  • PageQO:自定义类,用于统一封装查询参数,QO译为query object
  • PageVO:自定义类,用于统一封装分页响应数据,VO译为view object
  • PageHelper:分页插件提供,该helper类用于做核心分页功能
  • Page:分页插件提供,helper返回值,也同时存在数据库查询出来的数据列表信息
3. 以分页查看用户功能为例

我们自己定义的PageQO类(统一查询参数):

package com.zhuma.demo.comm.model.qo;

import org.hibernate.validator.constraints.Range;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值