java中分頁

1.數據庫分頁:
/**
* @param pageItems:一頁顯示條數 currentPage:當前第幾頁
* @autor godelegant
*/
public List findAll(int pageItems,int currentPage){
  StringBuffer sqlStr = new StringBuffer("select * from Product limit ?,?");
   ... 
   ...
  int startIndex = (currentPage-1)*pageItems;);//(currentPage-1)*pageItems能過當前頁和頁面記錄數得到應該從哪條開始取
  int endIndex = startIndex+pageItems;
  db.getPstmt().setInt(1,startIndex);
  db.getPstmt().setInt(2,endIndex);
  ResultSet rs = db.getPstmt().executQuery();//假設你已經得到了數據庫連接

//以上爲MYSQL的JDBC分頁,下面是ORALCE的,差別只在於SQL,所以你換一下SQL就OK:
StringBuffer sqlStr = new StringBuffer("select *,rownum rn from (select * from Product) where rn <=? and rownum >=?");

}
求總頁數的方法很簡單,查出所有記錄數,除一頁顯示數。就可以得到

以上是JDBC的,如果使用hibernate等,數據庫分頁將會變得很簡單,只需要設置兩個參數,就是從哪取和取多少。

2.代碼分頁
 思路是將數據庫中的所有記錄都取出來,然後再分頁。
/**
* @para items:數據庫中的所有記錄,你可以使用另一個方法得到,如何查詢得到我就不用說了吧
* @autor godelegant
*/
 public List findAll(List items,int pageItems,int currentPage){
    int startIndex = (currentPage-1)*pageItems;//從哪裏開始取
    int offset = items.size()-startIndex;//還有多少沒有取過
    
    int pageCount = offset>pageItems?pageItems:offset;//如果沒有取過的大於需要顯示的數,則實現顯示數pageCount=pageItems,反之然;
    
    List<Product> pageList = new ArrayList();
    for(int i=startIndex,i<startIndex+pageCount,i++){
      pageList.add(items.get(i));
    }

    return pageList;

}
發佈了18 篇原創文章 · 獲贊 112 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章