pagehelper主要用于java后端访问数据库时实现分页查询。其一般在SSM项目的controller层中使用,模板如以下代码所示:
/**
*在下面的方法中,我们将查询对应页码(pageNum),对应页面数据量(PaginationConstant.FRONT_PAGE_SIZE) 的数据
*/
public String search(Model model,Integer pageNum, ProductParams productParams){
//判断是否传入页码,如未传入,则页码默认为1;
if(ObjectUtils.isEmpty(pageNum)){
pageNum = PaginationConstant.PAGE_NUM;
}
//设置pagehelper的起始页码(pageNUm),页面数据量(PaginationConstant.FRONT_PAGE_SIZE)
PageHelper.startPage(pageNum,PaginationConstant.FRONT_PAGE_SIZE);
//调用service进行查询所有,但查询到的products其实只包含了所设定的页面数据
List<Product> products = productService.find(productParams);
//将查询结果products封装到pageInfo对象中,供前端页面使用
//pageInfo对象还包含了页面的当前页码,总页数等信息。
PageInfo<Product> pageInfo = new PageInfo<>(products);
model.addAttribute("pageInfo",pageInfo);
model.addAttribute("productParams",productParams);
return "main";
}
然后,我们在前端使用‘${pageInfo.list}’即可以获得当前页的数据(products)。这里,我的products是我创建的Product商品类的集合
代码片段如下:
<div>
<!--使用c:foreach即可展示后台传入的pageInfo包含的当前页数据-->
<c:forEach items="${pageInfo.list}" var="product">
<div>${product.id}</div>
<div>${product.name}</div>
<div>${product.price}</div>
...
</c:forEach>
</div>
配合合适的css样式就可以展示美观的前端页面了,展示如下:
这是第一页
这是第二页
当然,我们实际还需要配合使用前端分页框架,如bootstrap paginator才能实现具有如下翻页功能的页面:
可以参考博客:如何使用前端分页框架bootstrap paginator