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; }
相关资源:springMVC+hibernate的条件查询加分页的demo