在Springboot中使用pagehelper实现分页管理

我们在开发Web应用时,经常会使用到分页。

如果你也在用 MyBatis,建议尝试该分页插件pagehelper,这一定是最方便使用的分页插件。分页插件支持任何复杂的单表、多表分页。

官网地址:https://pagehelper.github.io/

我从github上的一个项目中,找到一个包装公共类。和另一个用于返回json格式的数据的公共类一起使用,效果更好。

关于返回JSON格式数据的公共类可以看用于Springboot项目中,控制层返回给前端的JSON格式的通用结果公共类CommonResult

CommonPage包装公共类

将pagehelper进行了包装

import com.github.pagehelper.PageInfo;
import java.util.List;
import org.springframework.data.domain.Page;

public class CommonPage<T> {
    private Integer pageNum;
    private Integer pageSize;
    private Integer totalPage;
    private Long total;
    private List<T> list;

    public CommonPage() {
    }

    public static <T> CommonPage<T> restPage(List<T> list, Long total) {
        CommonPage<T> result = new CommonPage();
        PageInfo<T> pageInfo = new PageInfo(list);
        result.setTotalPage(pageInfo.getPages());
        result.setPageNum(pageInfo.getPageNum());
        result.setPageSize(pageInfo.getPageSize());
        result.setTotal(total);
        result.setList(pageInfo.getList());
        return result;
    }

    public static <T> CommonPage<T> restPage(Page<T> pageInfo) {
        CommonPage<T> result = new CommonPage();
        result.setTotalPage(pageInfo.getTotalPages());
        result.setPageNum(pageInfo.getNumber());
        result.setPageSize(pageInfo.getSize());
        result.setTotal(pageInfo.getTotalElements());
        result.setList(pageInfo.getContent());
        return result;
    }

    public Integer getPageNum() {
        return this.pageNum;
    }

    public void setPageNum(Integer pageNum) {
        this.pageNum = pageNum;
    }

    public Integer getPageSize() {
        return this.pageSize;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }

    public Integer getTotalPage() {
        return this.totalPage;
    }

    public void setTotalPage(Integer totalPage) {
        this.totalPage = totalPage;
    }

    public List<T> getList() {
        return this.list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }

    public Long getTotal() {
        return this.total;
    }

    public void setTotal(Long total) {
        this.total = total;
    }
}

主要使用其第一个静态方法CommonPage.restPage(List<T> list, Long total)
入口参数分别是要返回的对象列表,和总页数。

添加依赖

我们要使用pagehelper以及这个CommonPage类,需要在pom.xml中添加以下依赖

       <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
            <version>2.1.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.1</version>
        </dependency>

注意,对于pagehelper需要添加github第三方的spring-boot-starter依赖。这样可以减少一些配置。如果直接添加的是github的pagehelper依赖,则需要写配置信息。

使用

我们在一个Contoller类中来使用,示例代码如下:

    @RequestMapping(value = "/select", method = RequestMethod.GET)
    @ResponseBody
    public CommonResult<CommonPage<School>> list( @RequestParam(value = "pageSize", defaultValue = "5") Integer pageSize,
                                                  @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum){
        Page page = PageHelper.startPage(pageNum, pageSize);
        List<School> list = schoolService.getSchools();
        Long pageTotal=page.getTotal();
        return CommonResult.success(CommonPage.restPage(list,pageTotal));
    }

测试

我们打开浏览器,输入请求

http://localhost:8082/losefinder/select?pageSize=10&pageNum=2

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java Man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值