实现分页功能需要三步:第一步,调用PageHelper的startPage方法,传入分页数量和每页显示的数量;第二步,填充分页数据;第三步,开始分页。注意,全部用List集合进行处理
public ServerResponse<PageInfo> getProductList(int pageNum, int pageSize) {
//1.startPage--start
PageHelper.startPage(pageNum,pageSize);
//2.填充自己的sql查询逻辑
List<Product> productList = productMapper.selectList();
List<ProductListVo> productListVoList = Lists.newArrayList();
for (Product productItem : productList) {
ProductListVo productListVo = assembleProductListVo(productItem);
productListVoList.add(productListVo);
}
//3.pageHelper--收尾
PageInfo pageResult = new PageInfo(productList);
//分页结果重置
pageResult.setList(productListVoList);
return ServerResponse.createBySuccess(pageResult);
}
//productListVo的组装方法
private ProductListVo assembleProductListVo(Product product){
ProductListVo productListVo = new ProductListVo();
productListVo.setId(product.getId());
productListVo.setName(product.getName());
productListVo.setCategoryId(product.getCategoryId());
productListVo.setImageHost(PropertiesUtil.getProperty("ftp.server.http.prefix","http://img.liuhe.link/"));
productListVo.setMainImage(product.getMainImage());
productListVo.setPrice(product.getPrice());
productListVo.setSubtitle(product.getSubtitle());
productListVo.setStatus(product.getStatus());
return productListVo;
}
没有写成PageInfo pageResult = new PageInfo(productListVoList);的原因是 PageHelper
是AOP做的,所以如果脱离了目标,切面不会命中,那么pagehepler自动增加sql里的limit和offset等就弄不上啦
网友评论