我已知的第一种:数据库为mysql
利用SELECT * FROM tablename LIMIT current,pagesize来做分页,前端需要传递两个参数,一个是每页多少条数据即pagesize,第二是用户点击了第几页即cureent=(第几页-1)乘pagesize
利用SELECT COUNT(0) FROM tablename [where......];获得总条数来计算出可以分多少页。
后台就很好弄了,先弄一个公共类,大概有代码如下:
public class PageQueryBean {
private static final int DEFAULT_PAGE_SIZE = 10;
/** 当前页 */
private Integer currentPage;
/** 每页显示数据条数 */
private Integer pageSize;
/** 所有记录数 */
private int totalRows;
/** sql查询起始行 */
private Integer startRow;
/** 总页数 */
private Integer totalPage;
/** 查询所得数据集 */
private List<?> items;
public final Integer getStartRow() {
if (startRow == null)
startRow = (currentPage == null ? 0 : (currentPage - 1) * getPageSize()) ;
return startRow;
}
public void setStartRow(Integer startRow) {
this.startRow = startRow;
}
public final Integer getPageSize() {
return pageSize == null ? DEFAULT_PAGE_SIZE : pageSize;
}
public final void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public final int getTotalRows() {
return totalRows;
}
public final void setTotalRows(int totalRows) {
this.totalRows = totalRows;
int totalPage = totalRows % getPageSize() == 0 ? totalRows / getPageSize() : totalRows / getPageSize() + 1;
setTotalPage(totalPage);
}
public final List<?> getItems() {
return items == null ? Collections.EMPTY_LIST : items;
}
public final void setItems(List<?> items) {
this.items = items;
}
public final Integer getCurrentPage() {
return currentPage;
}
public final void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public final Integer getTotalPage() {
return totalPage == null || totalPage == 0 ? 1 : totalPage;
}
public final void setTotalPage(Integer totalPage) {
this.totalPage = totalPage;
}
@Override
public String toString() {
return "PageQueryBean [currentPage=" + currentPage + ", pageSize="
+ pageSize + ", totalRows=" + totalRows + ", startRow="
+ startRow + ", totalPage=" + totalPage + ", items=" + items
+ "]";
}
然后再写相关的VO类,继承于上述的公共类,再写相关的service,controller等,具体就不说了,也比较容易。
我已知的第二种 持久层利用JPA
使用Pageable来做分页,前端传过来page和size作为PageRequest实例的参数,代码
PageRequest request = new PageRequest(page-1,size);
再使用
Page<ProductInfo> productInfoPage = productService.findAll(request);
//其中productService中直接return repository.findAll(pageable);
其中总页数为productInfoPage.getTotalPages(),productInfoPage.content即是productInfo的集合。最后把productInfoPage返回到前端,前端拿到后分页就行了。
内容如上。\( ̄︶ ̄)/
参考资料:无所不知的度娘+各位大佬的博客