前端代碼.html
var pageSize = 10;//設置每頁顯示條數 var total;//數據總條數 function pagination() { $("#Pagination").pagination(total, { callback : PageCallback, prev_text : '上一頁', next_text : '下一頁', items_per_page : pageSize, num_display_entries : 4, //連續分頁主體部分顯示的分頁條目數 num_edge_entries : 1 //兩側顯示的首尾分頁的條目數 }) } function PageCallback(index, jq) { //前一個表示您當前點擊的那個分頁的頁數索引值,后一個參數表示裝載容器。 LoadData(index); } function LoadData(pageIndex) { $.ajax({ type : "get", url : "servlet/BookServlet?p=0&pageSize=" + pageSize + "&pageIndex=" + pageIndex, async : false, dataType : "json", success : function(ObjData) { var lists = ObjData.data; total = ObjData.recordsTotal; $("#tbodyList").empty(); $("#listsTemplate").tmpl(lists).appendTo("#tbodyList"); } }) } $(function() { LoadData(0);//分頁初始化 pagination();//分頁展示 })
<div id="Pagination" class="pagination"> <!-- 這里顯示分頁 --> </div>
PageHelper幫助類
package com.rongjie.common; import java.util.ArrayList; import java.util.List; /** * 分頁幫助類 * @author 曹勇 * * @param <T> javabean class */ public class PageHelper<T> { private List<T> list;//返回數據集合 private int total;//查詢數據總數 public List<T> getList() { return list; } public void setList(List<T> list) { this.list = list; } public int getTotal() { return total; } public void setTotal(int total) { this.total = total; } /** * 分頁算法 * @param list 總數據 * @param page 當前頁碼 * @param rows 每頁容量 * @return List * 注: 次方法應用於數據量比較小的情況,反之 會很慢 */ public List<T> paginationBook(List<T> list, int page, int rows) { List<T> small = new ArrayList<T>(); int beginIndex = rows * page; int endIndex; if (rows * (page + 1) > list.size()) { endIndex = list.size(); } else { endIndex = rows * (page + 1); } for (int i = beginIndex; i < endIndex; i++) { small.add(list.get(i)); } return small; } }
Servlet代碼 這部分非通用代碼。根據項目自行調整
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); String pageIndex = request.getParameter("pageIndex");// 當前頁碼 int page = (RegExpValidatorUtils.IsNumber(pageIndex) == true) ? Integer.parseInt(pageIndex) : 0; String pageSize = request.getParameter("pageSize");// 每頁顯示多少條 int rows = (RegExpValidatorUtils.IsNumber(pageSize) == true) ? Integer.parseInt(pageSize) : 0; BookViewInfo bookViewInfo = null;//這個是 視圖bean,可根據自己需求修改 PageHelper<BookInfo> plist = null;//分頁幫助類 plist = bll.Index(page, rows);//調用業務層 方法 List<BookViewInfo> bookViewInfoList = new ArrayList<BookViewInfo>(); // 裝載視圖 模型 for (BookInfo bookInfo : plist.getList()) {//這部分是 裝載對象,根據不同項目 要進行修改 bookViewInfo = new BookViewInfo(); bookViewInfo.setBook_id(bookInfo.getBook_id()); String statusTemp = bookInfo.getBook_status(); bookViewInfo.setBook_status(statusTemp); bookViewInfo.setBook_title(bookInfo.getBook_title()); bookViewInfo.setBook_category(bookInfo.getBook_category()); bookViewInfo.setBook_saleprice(bookInfo.getBook_saleprice()); bookViewInfo.setBook_createtime(sdf.format(bookInfo.getBook_createtime())); bookViewInfo.setBook_creator(bookInfo.getBook_creator()); bookViewInfo.setCategory_name(bookInfo.getCategoryInfo().getCategory_name()); bookViewInfoList.add(bookViewInfo); } Collections.reverse(bookViewInfoList);// 倒序 String jsonStr = "{\"recordsTotal\":" + plist.getTotal() + ",\"recordsFiltered\":" + bookViewInfoList.size() + ",\"data\":" + JSONArray.fromObject(bookViewInfoList) + "}"; //這里使用了 net.sf.json.JSONArray 來做json序列化 response.getWriter().write(jsonStr); }
業務層代碼:這部分非通用代碼。根據項目自行調整
private BookDao dao = new BookDao(); /** * 分頁數據 * * @param page * 當前頁碼 * @param rows * 每頁顯示多少條數據 * @return */ public PageHelper<BookInfo> Index(int page, int rows) { PageHelper<BookInfo> pageHelper = new PageHelper<BookInfo>(); List<BookInfo> alllist = dao.Index(); pageHelper.setTotal(alllist.size());// 數據總量 List<BookInfo> list = pageHelper.paginationBook(alllist, page, rows); pageHelper.setList(list);// 每次裝在rows數量的數據 Collections.reverse(list);// 倒序 return pageHelper; }
DAO層代碼 這部分非通用代碼。根據項目自行調整
/** * 查詢所有圖書 * * @return List */ public List<BookInfo> Index() { String sql = "select * from 表 "; try { jdbcUtils = new JdbcUtils(); connection = jdbcUtils.getConnection();// 連接數據庫 List<BookInfo> list = findAll(sql); return list; } catch (Exception e) { throw new DaoException(e); } finally { jdbcUtils.releaseConn(connection, null); } } /** * 分頁查詢 /查詢全部信息 * * @param sql * 查詢語句 * @param params * @return * @throws SQLException * @throws ParseException */ private List<BookInfo> findAll(String sql, Object... params) throws SQLException, ParseException { List<BookInfo> list = new ArrayList<BookInfo>(); pstmt = connection.prepareStatement(sql); setParam(pstmt, params); resultSet = pstmt.executeQuery(); // Timestamp book_createtime = new // Timestamp(System.currentTimeMillis()); // book_createtime = Timestamp.valueOf(book_createtimeStr); while (resultSet.next()) { BookInfo bookInfo = new BookInfo(); CategoryInfo categoryInfo = new CategoryInfo(); bookInfo.setID(resultSet.getInt("id")); bookInfo.setBook_id(resultSet.getInt("book_id")); bookInfo.setBook_category(resultSet.getInt("book_category")); bookInfo.setBook_publisher(resultSet.getInt("book_publisher")); bookInfo.setBook_publishtime(resultSet.getDate("book_publishtime")); bookInfo.setBook_title(resultSet.getString("book_title")); // 構造以字符串內容為值的BigDecimal類型的變量book_price BigDecimal book_price = new BigDecimal(resultSet.getString("book_price")); BigDecimal book_saleprice = new BigDecimal(resultSet.getString("book_saleprice")); // 設置小數位數,第一個變量是小數位數,第二個變量是取舍方法(四舍五入) book_price = book_price.setScale(2, BigDecimal.ROUND_HALF_UP); book_saleprice = book_saleprice.setScale(2, BigDecimal.ROUND_HALF_UP); bookInfo.setBook_price(book_price); bookInfo.setBook_saleprice(book_saleprice); bookInfo.setBook_isbn(resultSet.getString("book_isbn")); bookInfo.setBook_supplier(resultSet.getString("book_supplier")); bookInfo.setBook_keyword(resultSet.getString("book_keyword")); bookInfo.setBook_summary(resultSet.getString("book_summary")); bookInfo.setBook_cover(resultSet.getString("book_cover")); bookInfo.setBook_preview(resultSet.getString("book_preview")); bookInfo.setBook_download(resultSet.getString("book_download")); bookInfo.setBook_creator(resultSet.getInt("book_creator")); bookInfo.setBook_createtime(resultSet.getTimestamp("book_createtime")); bookInfo.setBook_status(resultSet.getString("book_status")); categoryInfo.setCategory_name(resultSet.getString("category_name")); bookInfo.setCategoryInfo(categoryInfo); list.add(bookInfo); } jdbcUtils.releaseConn(connection, resultSet); return list; }