ssh的分頁操作

im not monster發表於2020-11-14

最近用學了一個ssh做了一個特殊的分頁,怎麼特殊呢?上才藝!
在這裡插入圖片描述
可以看到起始只能顯示1,2,3後面就是…,接下來
在這裡插入圖片描述
對就是…後面是五六七。的效果。
下面說明具體步驟。
sql語句有這條“select * from 表 limit ?,?”.兩個佔位符,第一個代表起始位置也就是初始值是從第幾開始進行的(最初是為0),第二個代表每次的個數即每次可以查詢幾條。

瞭解這行sql語句就要分析之後需要的條件:
1、當前頁
2、翻頁需要查詢幾條(翻頁條數)
3、總共資料庫的條數
4、總頁數==(總條數/翻頁條數)
這些條件可以用一個實體類來定義
在這裡插入圖片描述
然後用另外一個類去實現它:方法
1、當前頁可以自定義也可以預設為1(一般為1)
當你訪問另一個頁面時可以不設定預設為1
在這裡插入圖片描述
2、翻頁條數也可以自定義,或者傳參,因為 最上面的sql語句的兩個佔位符是需要當前頁、總條數、和翻頁數,所以可以寫一個方法在這裡插入圖片描述
每次分頁都可以呼叫這個方法。
3、總條數資料庫全查可以得出
4、不用說了吧
然後就是解決最上面sql語句第一個佔位符的問題(起始位置),(提示)寫一個方法好呼叫。解決:(當前頁-1)乘翻頁條數。可以列舉幾個試試。

大致這幾個框架已經打好了,接下來該如何實現呢?
首先這個上一頁和下一頁不用說了當前頁數進行加一和減一,說一下這裡進行a標籤傳值是自動重新整理的,當你從mvc傳過來值時,直接在a標籤進行資料的加一和減一是自動實現的。
首頁和尾頁也是如此首頁的當前頁為1,而尾頁的當前頁就是總頁數

在這裡插入圖片描述
這個如何實現呢?
原本是有五個頁數,但現在只能看到後三個,因為前兩個被遮蔽了,因為只有當這五個頁數分別大於零才能顯現。即當前頁數為1時前面兩個都小於1,顯示不出來
在這裡插入圖片描述
當頁數為3左右各兩個就顯示出來了,後面兩個的限制是後倆的頁數小於總頁數。

圖中…的意思其實就是看不見正常五頁左邊和右邊的,有個限制條件加一加就能實現,具體有點難的就是有關頁數的類的實現有點困難我直接程式碼封上
下面展示。

// An highlighted block
public class pagebean {
	//頁面大小
 private Integer pagesize;
 	//當前頁
 private Integer currentpage;
 	//總條數
 private Integer totalcount;
 	//總頁數
 private Integer totalpage;
 	//每頁顯示的頁數
 private List list;
 public pagebean(Integer pagesize,Integer currentpage,Integer totalcount) {
	 	this.pagesize=pagesize;
	 	this.currentpage=currentpage;
	 	this.totalcount=totalcount;
	 	//當前頁為空或者小於零把它看為一
	 	if(this.currentpage==null||this.currentpage<1) {
	 		this.currentpage=1;
	 	}
	 	//預設一般頁為五個屬性
//	 	if(this.pagesize==null) {
//	 		this.pagesize=5;
//	 	}
	 	//Math.ceil方法是向上取整
	 	/*這裡一個坑,起初我以為是我的start方法有問題,實際就是沒問題,因為傳到currentpage一直是1!!
	 	 * 因為Math.ceil的方法我他媽多加了一個括號,如果先整數相處就直接四捨五入了,14/8等於一點多,java直接判斷
	 	 * 為1,所以totalpage一直是1,無論點選下一頁也沒用。
	 	 * */
	 	this.totalpage=(int) Math.ceil(1.0*this.totalcount/this.pagesize);
	 //	System.out.println(	this.totalcount);
	 //	System.out.println(this.pagesize);
	 //	System.out.println(this.totalpage);
	 	//判斷當前頁是否大於總頁數
	 	if(this.currentpage>this.totalpage) {
	 		this.currentpage=this.totalpage;
	 	}
 }
 //獲取起始索引 不知道為什麼這麼方法用不了奇了怪了、、因為currentpage的值一直是1,所以不能重新整理
 public Integer getstart() {
	 return (this.currentpage-1)*this.pagesize;
 }
public Integer getPagesize() {
	return pagesize;
}
public void setPagesize(Integer pagesize) {
	this.pagesize = pagesize;
}
public Integer getCurrentpage() {
	return currentpage;
}
public void setCurrentpage(Integer currentpage) {
	this.currentpage = currentpage;
}
public Integer getTotalcount() {
	return totalcount;
}
public void setTotalcount(Integer totalcount) {
	this.totalcount = totalcount;
}
public Integer getTotalpage() {
	return totalpage;
}
public void setTotalpage(Integer totalpage) {
	this.totalpage = totalpage;
}
public List getList() {
	return list;
}
public void setList(List list) {
	this.list = list;
}
}

相關文章