import java.util.LinkedList;
import java.util.List;
public class Page {
//页面大小,每页显示的记录数
private int pageSize=2;
//开始页
private int beginStartPage=1;
//记录总数
private long recordCount=0;
//页数
private int pageCount = 0;
//每页的结果集
private List result=new LinkedList();
//private Iterator result;
public Page(){}
public Page(int pageSize,int pageNo,long rowCount,List result)
{
this.pageSize = pageSize;
this.recordCount = rowCount;
this.result = result;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getBeginStartPage() {
return beginStartPage;
}
public void setBeginStartPage(int beginStartPage) {
this.beginStartPage = beginStartPage;
}
public long getRecordCount() {
return recordCount;
}
public void setRecordCount(long recordCount) {
this.recordCount = recordCount;
}
public int getPageCount() {
return pageCount;
}
public void setPageCount(int pageCount) {
this.pageCount = pageCount;
}
public List getResult() {
return result;
}
public void setResult(List result) {
this.result = result;
}
public void setPageCountByRs()
{
int module = (int)this.recordCount%this.pageSize;
if ( module == 0 )
{
setPageCount((int)this.recordCount/this.pageSize);
}
else
{
setPageCount((int)(this.recordCount-module)/this.pageSize);
}
}
}
//..............................................................................
public Page findPageByCriteria(int pageNo,int pageSize,String str)
{
log.debug("findPageByCriteria::start...");
Page page = null;
if ( str!= null && !("".equals(str)) )
{
JSONObject jsonObj = JSONObject.fromObject(str);
String username=jsonObj.getString("userName");
Criterion s1= null;
if ( username != null && !("".equals(username)) )
{
s1 = Restrictions.ilike("username",username,MatchMode.ANYWHERE);
}
page = genPageDivided(pageNo, pageSize, UsrUser.class, s1);
}
else
{
page = genPageDivided(pageNo, pageSize, UsrUser.class, null);
}
if ( page != null )
{
page.setPageCountByRs();
List resultList = new LinkedList();
List<Object> lstObj =page.getResult();
if ( lstObj != null && lstObj .size()!= 0 )
{
for(Object item : lstObj)
{
。。。。
resultList.add(0,o);
}
page.setResult(resultList);
}
else
{
page = null;
}
}
else
{
page = null;
}
return page;
}
private Page genPageDivided(int pageNo,int pageSize,Class className,final Criterion... criterions)
{
Page page = daoDividePage.findPageByCriteria(pageNo, pageSize, className, criterions);
return page;
}
/**
* @explain 根据条件查询出来的记录进行分页和统计记录数
*/
@SuppressWarnings("unchecked")
public Page findPageByCriteria(final int pageNo,final int pageSize,Class className,final Criterion... criterions)
{
Page page = null;
try
{
final DetachedCriteria crit = DetachedCriteria.forClass(className);
Integer totalCount = (Integer)getHibernateTemplate().execute(
new HibernateCallback()
{
public Object doInHibernate(Session session)throws HibernateException, SQLException
{
Criteria ct = crit.getExecutableCriteria(session);
if ( criterions!= null )
{
for ( Criterion criterion:criterions )
{
if ( criterion != null )
{
ct.add(criterion);
}
}
}
else
{
log.debug("criterions is null ");
}
return (Integer)ct.setProjection(Projections.rowCount()).uniqueResult();
}
});
log.debug("totalCount is " + totalCount);
List result = (List)getHibernateTemplate().execute(
new HibernateCallback()
{
public Object doInHibernate(Session session)throws HibernateException, SQLException
{
Criteria ct = crit.getExecutableCriteria(session);
if ( criterions!= null )
{
for ( Criterion criterion:criterions )
{
if ( criterion != null )
{
ct.add(criterion);
}
}
}
ct.setProjection(null);
ct.setFirstResult((pageNo-1)*pageSize);
ct.setMaxResults(pageSize);
return ct.list();
}
});
log.debug("result.size is " + result.size());
page= new Page(pageSize,pageNo,totalCount,result);
}
catch ( RuntimeException e )
{
e.printStackTrace();
return null;
}
return page;
}