1、功能
這個通用分頁類實現的功能是輸入頁數(第幾頁)和每頁的數目,就能獲得相應的資料。
2、實現原理
分頁的實現通常分為兩種,一種是先把資料全查詢出來再分頁,一種是需要多少查詢多少,這裡使用第二種,所以就需要先實現在dao層能夠查詢一定範圍內的資料,這裡就實現通過id作為鍵值,查詢一定範圍內的資料的功能
dao層需要實現乙個返回id在乙個範圍內的資料,那就在dao層的介面中新增乙個這個方法:
listselectbyrange(@param("low") integer low, @param("high") integer high);
<然後在service層的介面和類新增這樣乙個方法,這裡實現了輸入上下標返回乙個user的list:select
id="selectbyrange"
resultmap
="baseresultmap"
>
select
<
include
refid
="base_column_list"
/>
from t_user
where id
between #
and #
select
>
public listfindbyrange(int low, int再然後是通用的分頁類,這裡的low和high,將在pagenumber當前頁數或limit被修改時同時被修改:high)
public然後是測試類,其實這個測試類我是準備命名為manager類的,這樣dao層實現基本的資料庫操作,service層實現針對實體類的基本操作,然後manager類中實現前端的需求,然後api類,也就是jersey中就只需要呼叫manager中的方法即可,不過我還得在想想這樣是否合理。。。class pageentity
public
void setlow(int
low)
public
intgethigh()
public
void sethigh(int
high)
public listgetlist()
public
void setlist(listlist)
public
intgettotal()
public
void settotal(int
total)
public
intgetlimit()
public
void setlimit(int
limit)
public
intgetpages()
public
void setpages(int
pages)
public
intgetpagenumber()
public
void setpagenumber(int
pagenumber)
}
總之先這樣寫著吧,test中將新增這樣的方法及實現:
public pageentitypaging(pageentitypageentity)然後就是api類中呼叫了:
@path("hello")3、實現效果:public
class
jerseytest
return
stringbuilder.tostring();}}
先看看資料庫的資料吧:
然後是瀏覽器中使用時的狀態:
4、總結
這裡我實現了乙個pageentity類,這個類使用了泛型所以也支援其他類,目前實現的功能能夠傳入當前頁和每頁的數目,得到相應的資料,前端應該還需要我們返回,總的資料量,總共有多少頁等等的資料,不過這都是額外的操作了,實現也挺簡單的。通過在dao層新增方法,用sql語句計算出來,再給賦值就好了。
5、源**
源**可以從這裡獲取:
發布乙個最強的PHP通用分頁類
如果你學過asp.net,你一定知道它裡面有乙個叫datalist之類自帶的分頁功能十分強大,這裡的這個類就模擬了一部份這個功能,我敢用 強大 來定義它,是因為作為乙個通用的頁類,這個類真正做到了 通用 廢話少說,馬上介紹一下是如何使用的。1 先新建乙個用於測試的表 create table tes...
乙個分頁類
class page 獲得頁面uri,page為當前頁面傳遞的頁面值,var 為傳遞頁面的引數字串 private function get uri var page if else else if else return url 獲得頁面總數以及前一頁 後一頁 最後一頁 private funct...
乙個通用分頁查詢方法
為了簡化開發人員的 想寫乙個通用的分頁查詢方法,為了提交效率,其中有一段是分解hql語句,組成查詢總數的hql語句,實現如下 public paginationsupport findpagebyquery final string hsql,final object values,final in...