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