java普通分頁(低階分頁)
阿新 • • 發佈:2020-10-23
分頁我們要弄清楚分頁所需要的內容
分頁的初步分析
我們需要要有五個引數才能完成分頁:
pageNo 當前頁碼(當前你在第幾頁)
pageTotal 總頁碼數(如果你要分為30頁就是30)
pageTotalCount 總條目數(總共查詢出多少條資料)
pageSize 每頁顯示的數目(每一頁你要展示幾條資料)
items 當前頁碼顯示的資料集合(如果是為學生分頁那麼獲取的就是List<student>,)
只要這幾個引數齊全就可以開展了
首先我們建立一個
對應的JavaBean Page
package Pro; import java.util.List; publicPageclass 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; publicPage() { } 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 + '}'; } }
比如我們要對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 中【圖書管理】請求地址的修改:
.