美文网首页
怎么做分页

怎么做分页

作者: 狗没拿伞 | 来源:发表于2018-07-04 17:17 被阅读0次
    我已知的第一种:数据库为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返回到前端,前端拿到后分页就行了。


    内容如上。\( ̄︶ ̄)/

    参考资料:无所不知的度娘+各位大佬的博客

    相关文章

      网友评论

          本文标题:怎么做分页

          本文链接:https://www.haomeiwen.com/subject/pneuyftx.html