本文主要是同于后台数据列表分页的工具类
首先写一个分页的封装实体类
package com.cn.page;
import cn.hutool.json.JSONObject;
import com.cn.util.ServletUtil;
import com.cn.util.WebUtils;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.List;
import java.util.Objects;
@Getter
@Setter
public class Page<T> implements Serializable {
/**
* 当前页
*/
private int pageNum = 1;
/**
* 每页多少数据
*/
private int pageSize = 10;
/**
* 数据总条数
*/
private long totalCount = 0;
/**
* 总页数
*/
private int pageCount = 1;
/**
* 数据
*/
private T records;
/**
* 分页,在查询方法之前调用
*/
public void pageHelper() {
//获取所有请求参数
JSONObject paramObj = ServletUtil.paramsToJson(WebUtils.getRequest());
if (!Objects.isNull(paramObj)) {
//将参数转化为对象
Page page = paramObj.toBean(Page.class);
if (!Objects.isNull(page)) {
this.pageNum = page.pageNum;
this.pageSize = page.pageSize;
}
}
pageHelper(this.pageNum, this.pageSize);
}
/**
* 分页
*/
private void pageHelper(int pageNum, int pageSize) {
if (pageNum > 0 && pageSize > 0) {
PageHelper.startPage(pageNum, pageSize);
}
}
/**
* 初始化,返回分页数据
*/
@SuppressWarnings("unchecked")
public Page init(T data) {
this.records = data;
long totalCount = 0;
if (records instanceof List) {
totalCount = new PageInfo<>((List) data).getTotal();
}
this.totalCount = totalCount;
this.pageCount = (int) totalCount / pageSize + 1;
return this;
}
}
以上方法写好之后再后台接口中可以直接调用,如下
Page page = new Page();
page.pageHelper();
//正常需求返回数据
page.init(返回数据list集合);
//如需返回除了list集合以外的字段数据,可以通过json 的方式传值
new JSONObject(page.init(返回数据list集合)).put("a",1).put("b",2)