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;
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;
}
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;