pageHelp是一款很好用的分页插件,使用它我们可以很轻松的实现分页的功能。
想象一个场景,当我们做列表展示的时候我们不仅需要将列表中的数据响应给前台,是不是还应该将分页信息也相应给前台呢?而这时候我们在后台怎么拿到分页信息呢?
其实pageHelp已经给到了我们分页的数据
public ResultJson listAll(User user, Integer pageNo,Integer pageSize) {
Page<User> page = PageHelper.startPage(pageNo,pageSize);
List<User> list = userMapper.listAll(user);
log.info(String.valueOf(page));
if (list == null || list.size() == 0) {
return ResultJson.error("查询失败");
}
return new ResultJson(ResultConstant.OK,"查询成功", PageWeb.build(page));
}
注意上述代码,我在执行完startPage后输出了一下page的信息,让我们来看一下page所包含的信息
[21:07:34:541] [INFO] - com.qcby.demo.service.Impl.UserServiceImpl.listAll(UserServiceImpl.java:58) - Page{count=true,
pageNum=1,
pageSize=2,
startRow=0,
endRow=2,
total=2,
pages=1,
reasonable=false,
pageSizeZero=false}
[User(id=4, nickName=老师, userName=华强, password=123456, sex=0, authList=null),
User(id=5, nickName=管理员, userName=admin, password=123456, sex=0, authList=null)]
可以看到 page中已经包含了我们需要的分页信息,甚至还包含了我们需要得到的用户信息,这为我们为前台做响应提供了很大的遍历。
我们可以自己定义一个PageWeb类来封装一下这些信息以便我们的使用
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class PageWeb<T> {
private int pageNo;
private int pageSize;
private long total;
private int totalPages;
private List<T> records;
private PageWeb(Page<T> page) {
this.pageNo = page.getPageNum();
this.pageSize = page.getPageSize();
this.total = page.getTotal();
this.totalPages = page.getPages();
this.records = page.getResult();
}
/**
* 返回分页信息
* @param page
* @return
*/
public static <T> PageWeb build(Page<T> page){
return new PageWeb<>(page);
}
}
这样当我们想要响应给前台分页信息的时候我们只需要return
PageWeb.build(page)就OK了