Spring DAO的編寫:
利用hibernate提供的Query的setFirstResult和setMaxResults方法進(jìn)行數(shù)據(jù)分頁,程序中以我建立的用戶表為例,query的分頁機(jī)制是以跳指針的方式進(jìn)行數(shù)據(jù)讀取,這樣極大的提高的數(shù)據(jù)分頁程序的響應(yīng)速度
//分頁主程序
public List getUsersPage(int firstResults,int maxResults){
try {
Session session=this.getSession();
Query query=session.createQuery("from SYSUSERS sysusers order by sysusers.username asc");
query.setFirstResult(firstResults);
query.setMaxResults(maxResults);
return query.list();
} catch (HibernateException e) {
// TODO 自動生成 catch 塊
e.printStackTrace();
}
finally{
try {
session.close();
} catch (HibernateException e) {
// TODO 自動生成 catch 塊
e.printStackTrace();
}
}
return null;
}
//顯示分頁總頁數(shù)
public String getPageCount(int maxResults){
String pageCount="0";
try {
session=this.getSession();
Query query=session.createQuery("select count(sysusers.id) from SYSUSERS sysusers");
int Count=((Integer)query.list().get(0)).intValue();
if(Count%maxResults>0){
pageCount=String.valueOf(Count/maxResults+1);
}
else{
pageCount=String.valueOf(Count/maxResults);
}
return String.valueOf(pageCount);
} catch (HibernateException e) {
// TODO 自動生成 catch 塊
e.printStackTrace();
}
finally{
try {
session.close();
} catch (HibernateException e) {
// TODO 自動生成 catch 塊
e.printStackTrace();
}
}
return pageCount;
}
//顯示總記錄數(shù)
public String getTotalMark(){
String totalMark="0";
try {
session=this.getSession();
Query query=session.createQuery("select count(sysusers.id) from SYSUSERS sysusers");
int Count=((Integer)query.list().get(0)).intValue();
totalMark=String.valueOf(Count);
return totalMark;
} catch (HibernateException e) {
// TODO 自動生成 catch 塊
e.printStackTrace();
}
finally{
try {
session.close();
} catch (HibernateException e) {
// TODO 自動生成 catch 塊
e.printStackTrace();
}
}
return totalMark;
}
寫完spring的dao之后定義相應(yīng)的接口,這里不在復(fù)述
在這個(gè)dao寫好之后,就可以在相應(yīng)的表示層中進(jìn)行方法調(diào)用,達(dá)到分頁的目的