1. 程式人生 > 實用技巧 >java普通分頁(低階分頁)

java普通分頁(低階分頁)

分頁我們要弄清楚分頁所需要的內容

分頁的初步分析

我們需要要有五個引數才能完成分頁:

pageNo 當前頁碼(當前你在第幾頁)
pageTotal 總頁碼數(如果你要分為30頁就是30)
pageTotalCount 總條目數(總共查詢出多少條資料)
pageSize 每頁顯示的數目(每一頁你要展示幾條資料)
items  當前頁碼顯示的資料集合(如果是為學生分頁那麼獲取的就是List<student>,)

只要這幾個引數齊全就可以開展了

首先我們建立一個

對應的JavaBean Page

package Pro;

import java.util.List;

public
class Page<T> { public static final Integer PAGE_SIZE = 4; //當前頁碼 private Integer pageNo; //總頁碼 private Integer pageTotal; //當前野顯示的數量 private Integer pageSize = PAGE_SIZE; //查詢的總記錄數 private Integer pageToalCount; //當前頁資料 private List<T> items; public
Page() { } public static Integer getPageSize() { return PAGE_SIZE; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public Integer getPageToalCount() { return pageToalCount; } public void setPageToalCount(Integer pageToalCount) {
this.pageToalCount = pageToalCount; } public List<T> getItems() { return items; } public void setItems(List<T> items) { this.items = items; } public Integer getPageNo() { return pageNo; } public Integer getPageTotal() { return pageTotal; } public void setPageTotal(Integer pageTotal) { this.pageTotal = pageTotal; } /** * 設定第一頁和最後頁的限制,第一頁再點選上一頁也是第一頁 最後一頁 再點選下一頁也是最後頁 * @param pageNo */ public void setPageNo(Integer pageNo) { if(pageNo < 1){ pageNo = 1; } if(pageNo > pageTotal){ pageNo = pageTotal; } } @Override public String toString() { return "Page{" + "pageNo=" + pageNo + ", pageTotal=" + pageTotal + ", pageSize=" + pageSize + ", pageToalCount=" + pageToalCount + ", items=" + items + '}'; } }
Page

比如我們要對Book進行分頁展示

那麼就對最初的BookDao中新增方法

/**
     * 查詢所有記錄條目數
     * @return
     */
    public Integer queryForPageTotalCount();

    /**
     * 查詢介面展示的資訊集合
     * @param begin 開始位置
     * @param pageSize 每頁顯示的記錄數
     * @return
     */
    public List<Book> queryForPageItems(int begin,int pageSize);

BookDaoImpl中實現這兩個方法

 @Override
    public Integer queryForPageTotalCount() {
        String sql = "select count(*) from t_book";
        Number count = (Number) queryForStingValue(sql);
        return count.intValue();
    }

    @Override
    public List<Book> queryForPageItems(int begin, int pageSize) {
        String sql = "select `id`,`name`,`price`,`author`,`sales`,`stock`,`img_path` from t_book limit ?,?";
        return queryForList(Book.class,sql,begin,pageSize);
    }

然後再BookService中建立Page的實現

@Override
    public Page<Book> pages(int pageNo, int pageSize) {
        Page<Book> page = new Page<Book>();
        //設定當前頁碼
        page.setPageNo(pageNo);
        //設定每頁顯示的資料條目
        page.setPageSize(pageSize);
        //獲取總條目數
        Integer pageTotalCount = bookDao.queryForPageTotalCount();
        //設定總條目數
        page.setPageToalCount(pageTotalCount);
        //獲取總頁碼 總頁碼等於總條目數 / 每頁顯示的條目 pageTotalCount/pageSize
        Integer pageTotal = pageTotalCount / pageSize;
        if(pageTotalCount * pageSize > 1){
            pageTotal += 1;
        }
        page.setPageTotal(pageTotal);

        // 開始的條目數
        Integer begin = (page.getPageNo() -1) * pageSize;
        List<Book> items = bookDao.queryForPageItems(begin,pageSize);
        page.setItems(items);
        return page;
    }

然後是BookServlet

 protected void page(HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException {
        int pageNo = WebUtil.parseInt(req.getParameter("pageNo"),1);
        int pageSize = WebUtil.parseInt(req.getParameter("pageSize"), Page.PAGE_SIZE);
        Page<Book> page = bookService.pages(pageNo,pageSize);
        req.setAttribute("page",page);
        req.getRequestDispatcher("/pages/manager/book_manager.jsp").forward(req,resp);

    }

manager_menu.jsp 中【圖書管理】請求地址的修改:

.