日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 分頁的封裝――java實現(基于oracle)

分頁的封裝――java實現(基于oracle)

來源:程序員人生   發布時間:2015-02-04 08:35:29 閱讀次數:5296次

    分頁功能(Pagenation類)

 

分頁功能的 封裝 + 實現:

分頁的SQL語句 + 分頁工具類Pagenation的細節 + 分頁原理

 

1、     分頁的SQL語句:

select * from (selectt.*,row_number() over(order by ROWNUM ASC) rn from goods t) where rn>=? andrn<=?

?  goods :為表名,數據從goods中查得

?  第1個? :起始行號

?  第2個? :終點行號

 

2、     分頁工具類Pagenation的細節:

Pagenation類:類似JavaBean的工具類,封裝了分頁后的細節,

主要作用:封裝后臺分頁細節,前臺調用分頁細節。

簡介:實例化時需要傳入3個參數,然后類內部計算得到所有分頁細節

注意:后期還需要調用setList()方法將分頁結果也存入其中。

用法:后臺用此類封裝分頁結果,request給前臺,前臺展現。

傳入參數:當前頁數(pageNum)+每頁大小(size)+記錄總行數(rowCount)

 

3、     分頁原理:

1.    后臺sevlet根據參數調用分頁service()方法,返回值1個Pagenation類的對象,封裝了當前要求的分頁信息;

2.    service()方法處理進程:根據傳入的3個參數,初始化Pagenation類,然后調用dao包下的分頁查詢類,返回值為1個List,將這個List也存入Pagenation對象中,返回返回該對象;

3.    返回的Pagenation對象包括了有關分頁所有內容,將此對象放在request中傳到前臺,跳轉到前臺;

4.    在前臺中取出Pagenation的相干信息,此時的Pagenation對象中寄存著分頁信息,用EL和JSTL顯示分頁信息。

 

4、     代碼實現:

1.    分頁工具類(核心中的核心類):

 

2.    其他代碼:

(1)、前端展現代碼:

package com.test.util;

import java.util.List;

/**
 * Pagenation分頁工具類:用于數據的分頁
 * 根據傳入的pageNum參數來肯定從哪頁開始分頁
 * 根據傳入的size參數肯定每頁分多少條記錄
 * 根據傳入的rowCount參數來肯定數據總條數
 * @author Alvin Xing
 */
public class Pagenation {

/* 指定的參數 */
private int pageNum;  //當前頁號
private int size;  //頁面大小:每頁顯示多少條數據
/* DB中查找的數據 */
private long rowCount;  //數據總條數:共有多少條數據
private List list;  //數據內容
/* 由以上屬性計算得到的屬性 */
private int pageCount;  //頁面總數
private int startRow;  //當前頁面開始行,第1行動第0行
private int first = 1;  //第1頁  頁號
private int last;  //最后1頁  頁號
private int prev;  //前1頁  頁號
private int next;  //后1頁  頁號
private int startNav;  //導航欄  起始頁號
private int endNav;  //導航欄 末尾頁號
private int navCount = 10;  //導航欄長度  頁號顯示數量,最多顯示numCount+1條,這里顯示11頁


/**
* 構造器:初始化基本的3個參數(pageNum, size, rowCount),其他參數由計算得到
*/
public Pagenation(int pageNum, int size, long rowCount) {
//初始化基本參數
this.pageNum = pageNum;
this.size = size;
this.rowCount = rowCount;

//計算得到其他參數
this.pageCount = (int)Math.ceil(this.rowCount/(double)size);
this.last = pageCount;

this.pageNum = Math.min(pageNum, pageCount);  //1般情況下pageNum會等于傳入的pageNum,但當傳入的pageNum如果大于頁面總數,則pageNum就等于最大頁面數,即最后1頁的頁數
this.pageNum = Math.max(1, this.pageNum);  //1般情況下pageNum會等于傳入的pageNum,但當傳入的pageNum如果小于1,則pageNum就等于1,即第1頁的頁數

this.startRow = pageNum*size - (size⑴);

this.prev = (this.pageNum⑴>1)?(this.pageNum⑴):1;  //如果<前1頁>為第1頁,則顯示1,否則是{本頁頁數⑴}
this.next = (this.pageNum+1<this.pageCount)?(this.pageNum+1):this.pageCount;  //如果<后1頁>為最后1頁,則返回{最后1頁頁數},否則返回{本頁數+1}

//導航處理
// this.startNav = (this.pageNum⑸>1)?(this.pageNum⑸):1;  //導航來開始按鈕為{當前頁數⑸},如果當前頁數不足5,則導航欄開始按鈕為{第1頁}按鈕
this.startNav = (this.pageNum-(this.navCount/2)>1)?(this.pageNum-(this.navCount/2)):1;  //優化后的開始按鈕,使當前頁位于導航欄中間,開始按鈕已不是{當前頁數⑸},而是{當前頁數-導航欄總長度的1半}
this.endNav = (this.startNav+navCount<this.last)?(this.startNav+navCount):this.last;  //導航欄結束按鈕為{開始頁數+導航欄長度},如果{開始頁數+導航欄長度}超過頁面總數,則結束按鈕為{最后1頁}
}
public Pagenation(){  //空構造器
}


/**
* Setter() and Getter()
*/
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public long getRowCount() {
return rowCount;
}
public void setRowCount(long rowCount) {
this.rowCount = rowCount;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public int getPageCount() {
return pageCount;
}
public void setPageCount(int pageCount) {
this.pageCount = pageCount;
}
public int getStartRow() {
return startRow;
}
public void setStartRow(int startRow) {
this.startRow = startRow;
}
public int getFirst() {
return first;
}
public void setFirst(int first) {
this.first = first;
}
public int getLast() {
return last;
}
public void setLast(int last) {
this.last = last;
}
public int getPrev() {
return prev;
}
public void setPrev(int prev) {
this.prev = prev;
}
public int getNext() {
return next;
}
public void setNext(int next) {
this.next = next;
}
public int getStartNav() {
return startNav;
}
public void setStartNav(int startNav) {
this.startNav = startNav;
}
public int getEndNav() {
return endNav;
}
public void setEndNav(int endNav) {
this.endNav = endNav;
}
public int getNavCount() {
return navCount;
}
public void setNavCount(int navCount) {
this.navCount = navCount;
}

}


(2)、后臺處理的servlet代碼:見網盤資料

(3)、處理分頁的service方法類:見網盤資料

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩精品在线视频 | 久久免费视频在线观看 | 国内精品久久久久影院薰衣草 | 亚洲一区二区中文 | 九色91av| 久久精品国产亚洲一区二区三区 | 国产免费久久 | 欧美精品亚洲精品 | 成年人免费视频观看 | 日韩在线中文字幕 | 色精品| 国产亚洲精品美女久久久久久久久久 | 精品国产乱码久久久久久图片 | 日韩精品免费观看 | 国内免费精品视频 | 亚洲精品久久久久久国产 | 午夜三区 | 国产原创精品视频 | 麻豆传媒在线 | 九九九精品视频 | 天堂影视| 久久久精品一区 | 亚洲精品视频免费观看 | 日韩欧美精品一区二区三区经典 | 中国av大片| 五月天丁香综合久久国产 | 欧美一级欧美三级 | 久久天天综合 | 日韩毛片在线看 | 久久性视频 | 国产精品久久久久久久久久妞妞 | 亚洲综合免费 | 亚洲成人精品一区二区 | 黄色毛片一级片 | 成人欧美在线 | 老司机成人| 国产精品麻豆一区二区 | 欧美视频日韩 | 成人国产精品久久久 | 中文字幕在线三区 | 在线免费看污 |