importjava.util.List;
importorg.hibernate.HibernateException;
importorg.hibernate.Query;
importorg.hibernate.ScrollableResults;
/***//**
*<p>Title:分页器</p>
*
*<p>Description:</p>
*
*<p>Copyright:Copyright(c)2006</p>
*
*<p>Company:</p>
*
*<p>Author:一个人的日子</p>
*
*<p>Version:1.0</p>
*
*<p>CreateDate:2006-08-17</p>
*
*/
publicclassPage...{
privateListresult;//结果集
privateintpageSize;//页大小
privateintstartPage;//起始页从1开始
privateScrollableResultsscrollableResults;
privateinttotalResults;//总记录的条数
privateinttotalPages;//总页数

publicPage(intstartPage,intpageSize,Queryquery)...{
this.startPage=startPage;
this.pageSize=pageSize;
this.result=null;
try...{
this.scrollableResults=query.scroll();
this.scrollableResults.last();
if(scrollableResults.getRowNumber()>=0)...{
this.totalResults=this.scrollableResults.getRowNumber()+1;
}else...{
this.totalResults=0;
}
setTotalPages();
result=query.setFirstResult((this.getStartPage()-1)*this.pageSize).setMaxResults(this.pageSize).list();
}catch(HibernateExceptione)...{
e.printStackTrace();
}
}

/***//**
*得到查询结果
*@return查询结果
*/
publicListgetResult()...{
returnresult;
}

/***//**
*得到起始页
*@return
*/
publicintgetStartPage()...{
if(startPage<1)...{
startPage=1;
}
if(startPage>totalPages)...{
startPage=totalPages;
}
returnstartPage;
}

/***//**
*得到记录总数
*@return
*/
publicintgetTotalResults()...{
returntotalResults;
}

/***//**
*得到页大小
*@return
*/
publicintgetPageSize()...{
returnpageSize;
}

/***//**
*判断是否是第一页
*@return
*/
publicbooleanisFirstPage()...{
returnthis.startPage==1;
}

/***//**
*判断是否是有后一页
*@return
*/
publicbooleanhasNextPage()...{
returnthis.startPage<this.totalPages;
}

/***//**
*判断是否是有前一页
*@return
*/
publicbooleanhasPreviousPage()...{
returnthis.startPage>1;
}

/***//**
*设置总页数
*
*/
privatevoidsetTotalPages()...{
this.totalPages=this.totalResults/this.pageSize;
if(totalPages*pageSize<totalResults)...{
totalPages++;
}
}

/***//**
*得到总页数
*@return
*/
publicintgetTotalPages()...{
returntotalPages;
}
}
本文介绍了一个基于Hibernate的分页器实现方法,该分页器能够有效地处理大量数据的分页展示问题,通过使用ScrollableResults接口来获取数据集的总记录数,并实现了基本的分页逻辑。
1063

被折叠的 条评论
为什么被折叠?



