一、构造分页对象
@Data
public class Page<T> {
private Integer pageNo;
private Integer pageTotal;
private Integer pageSize;
/**
* 总记录数
*/
private Integer pageTotalCount;
/**
* 当前页数据
*/
private List<T> items;
/**
* 设置页码,进行边界检查
* @param pageNo
*/
public void SetAndCheckPageNo(Integer pageNo){
if(pageNo < 1){
pageNo = 1;
}
if(pageNo > pageTotal){
pageNo = pageTotal;
}
this.pageNo = pageNo;
}
}
二、Service层实现
@Override
public Page<UserDO> getUserByPage(GetPageRequest pageRequest) {
Page<UserDO> page = new Page<>();
Integer pageNo = pageRequest.getPageNo();
Integer pageSize = pageRequest.getPageSize();
//设置每页显示数量
page.setPageSize(pageSize);
//求总记录数
Integer pageTotalCount = userDao.getForPageTotalCount();
//设置总记录数
page.setPageTotalCount(pageTotalCount);
//求总页数
int pageTotal = pageTotalCount / pageSize;
if(pageTotalCount % pageSize > 0){
pageTotal += 1;
}
//设置总页数
page.setPageTotal(pageTotal);
//设置当前页码
page.SetAndCheckPageNo(pageNo);
//当前页数据的开始索引
int begin = (page.getPageNo() - 1) * pageSize;
//求当前页数据
List<UserDO> items = userDao.getForPageItems(begin,pageSize);
//设置当前页数据
page.setItems(items);
return page;
}
三、Controller层调用
@PostMapping("/page/user")
public String getUserByPage(@RequestBody GetPageRequest pageRequest){
Page<UserDO> userPage = userService.getUserByPage(pageRequest);
System.out.println("userPage = " + userPage);
return "OK";
}