hibernate 分页

Spring DAO的编写:
利用hibernate提供的Query的setFirstResult和setMaxResults方法进行数据分页,
程序中以我建立的用户表为例, query的分页机制是以跳指针的方式进行数据读
取,这样极大的提高的数据分页程序的响应速度
//分页主程序
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;
}
//显示分页总页数
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;
}
//显示总记录数
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之后定义相应的接口,这里不在复述
在这个dao写好之后,就可以在相应的表示层中进行方法调用,达到分页的目的

0 Comments:

Post a Comment



 
Copyright 2005-2007. Hello Wiki designed by Fen, Blogger Templates by Blogcrowds.