分頁問題

1.創建一個Page類
package com.hotel.util;
public class Page {
private int nextPage=1;
private int previouPage=1;
private int lastPage=1;
private int firstPage=1;
private int currentPage=1;
public Page(int nowPage,int pageSize,int total){
 this.currentPage=nowPage;
 calcuPage(nowPage,pageSize,total);
}
public void calcuPage(int nowPage,int pageSize,int total) {
 if((nowPage-1)*pageSize>=total){//total爲空時
  nowPage-=1;
  currentPage=nowPage;
 }
 
 
 if(nowPage*pageSize<total){
  nextPage=nowPage+1;
 }
 else{
  nextPage=nowPage;
 }
 
 
 if(nowPage<=1){
  previouPage=1;
 }
 else{
  previouPage=nowPage-1;
 }
 
 firstPage=total==0?0:1;
 lastPage=total%pageSize==0?total/pageSize:total/pageSize+1;
}
public int getNextPage() {
 return nextPage;
}
public int getPreviouPage() {
 return previouPage;
}
public int getLastPage() {
 return lastPage;
}
public int getFirstPage() {
 return firstPage;
}
public int getCurrentPage() {
 return currentPage;
}
}
 
 
2.根據當前頁和每頁大小,查詢數據庫中的表
   核心sql語句(以emp表爲例)
    select * from (select e.*,rownum row_num from emp e where rownum < =currentpage*pagesize) where row_num > (currentpage-1)*pagesize;
 
   
     如果要求查詢出的數據進行了排序,可以分爲3步走
1.select * from emp where order by empno;記爲臨時表A
2.select A.*,rownum row_num from A where rownum <= currentpage*pagesize;記爲臨時表B
3.select * from B where row_num >(currentpage-1)*pagesize;
 
合起來即爲
select * from (select A.*,rownum row_num from (select * from emp order by empno ) A where rownum <= 10) where row_num > 0;
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章