PageHelper分页插件原理可查看blog.csdn.net/l1884895673…
分页插件要使用在service层,要对直接查询的sql语句进行分页。若写在control层,则分页的total为1。因为pageHelper在统计total的时候,会在查询语句执行之前进行一次count(0)查询,即查询总条数,接着才会处理查询语句,而对service层查询的(其实是已经解析封装的)list结果进行分页,即对处理过的数据进行分页就是对值进行分页,就是一个值(也许)。
正确的案例如下:
control层:
public CommonResult query(@RequestBody PlaceInfoRequest jsonRequest){
PageInfo<PlaceInfoQueryVo> infos = placeInfoService.querySelective(jsonRequest);
return ResultUtil.success("根据条件查询",infos);
}
service层:
@Override
public PageInfo<PlaceInfoQueryVo> querySelective(PlaceInfoRequest placeInfoRequest) {
Page page = PageHelper.startPage(placeInfoRequest.getPage(), placeInfoRequest.getPageSize());
List<PlaceInfoQueryVo> placeInfoQueryVos = placeInfoMapper.selectSelective(placeInfoRequest);
PageInfo<PlaceInfoQueryVo> pageInfo = new PageInfo<>(placeInfoQueryVos);
pageInfo.setTotal(page.getTotal());
return pageInfo;
}
*注:
其中pageinfo用于对Page结果进行包装,提供更多的分页属性
public class PageInfo<T> extends PageSerializable<T> {
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//由于startRow和endRow不常用,这里说个具体的用法
//可以在页面中"显示startRow到endRow 共size条数据"
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总页数
private int pages;
//前一页
private int prePage;
//下一页
private int nextPage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
//导航条上的第一页
private int navigateFirstPage;
//导航条上的最后一页
private int navigateLastPage;
分页工具的基础使用,只需下面两行即可(此时page已对placeInfoQueryVos分页)
@Override
public List querySelective(PlaceInfoRequest placeInfoRequest) {
Page page = PageHelper.startPage(placeInfoRequest.getPage(), placeInfoRequest.getPageSize());
List<PlaceInfoQueryVo> placeInfoQueryVos = placeInfoMapper.selectSelective(placeInfoRequest);
也可添加主要的分页属性,转为 pageableObject类
@Override
public pageableObject querySelective(PlaceInfoRequest placeInfoRequest) {
Page page = PageHelper.startPage(placeInfoRequest.getPage(), placeInfoRequest.getPageSize());
List<PlaceInfoQueryVo> placeInfoQueryVos = placeInfoMapper.selectSelective(placeInfoRequest);
return PageUtil.genPageableObject(list);
pageUtil为简单封装
public class PageUtil {
public static PageableObject genPageableObject(Page page){
PageableObject pageableObject = new PageableObject();
pageableObject.setList(page);
pageableObject.setTotalCount((int) page.getTotal());
pageableObject.setPage(page.getPageNum());
pageableObject.setPageSize(page.getPageSize());
return pageableObject;
}
}
public class PageableObject<T> {
private int page;
private int pageSize;
private int totalCount;
private List<T> list;
感谢阅读!