1、分页类:class PageView { //查询结果的总条数 private int totalNum; //分页查询的List结果 private List pageList; //每页显示多少条数据 private int pageSize; //总共多少页 private int pageTotal; //当前是第几页 private int page; get and set method....}2.daoImpl类public class FindByHqlDaoImpl extends HibernateDaoSupport implements FindByHqlDao{public List findByHql(final String hql,final int offset, final int pageSize) { List list = getHibernateTemplate() .executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query=session.createQuery(hql); if(offset>0){ query=query.setFirstResult(offset); } if(pageSize>0){ query=query.setMaxResults(pageSize); } return query.list();
} }); return list; } public List findByHql(final String hql , final Object value ,final int offset) { return this.findByHql(hql, value, offset, 0); } public List findByHql(final String hql , final Object value) { return this.findByHql(hql, value, 0, 0); } public List findByHql(final String hql, final Object[] values, final int offset, final int pageSize) { List list = getHibernateTemplate() .executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(hql); for (int i = 0 ; i < values.length ; i++) { query.setParameter( i, values[i]); }
if(offset>0){ query=query.setFirstResult(offset); } if(pageSize>0){ query=query.setMaxResults(pageSize); } return query.list(); /* List result = query.setFirstResult(offset) .setMaxResults(pageSize) .list(); return result; */ } }); return list; } public List findByHql(final String hql, final int offset) { return this.findByHql(hql, offset, 0); } public List findByHql(final String hql) { return this.findByHql(hql, 0, 0); } public List findByHql(final String hql , final Object value ,final int offset, final int pageSize) { List list = getHibernateTemplate() .executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query=session.createQuery(hql).setParameter(0, value); if(offset>0){ query=query.setFirstResult(offset); } if(pageSize>0){ query=query.setMaxResults(pageSize); } return query.list(); /* List result = session.createQuery(hql) .setParameter(0, value) .setFirstResult(offset) .setMaxResults(pageSize) .list(); return result; */ } }); return list; }
public List findByHql(final String hql, final Object[] values,final int offset) { return findByHql(hql,values, offset, 0); } public List findByHql(final String hql, final Object[] values) { return findByHql(hql,values, 0, 0); }3.action类:class ArticleAction extends ActionSupport {/** *添加分页 查找栏目ID下的文章列表 * * @return */ public String findArticlesByFieldIdMethod() { int pageNum = 0; String pageNum_str = ServletActionContext.getRequest().getParameter( "pager.offset"); if (pageNum_str != null) { pageNum = Integer.parseInt(pageNum_str); } this.findByName = null; HttpServletRequest request = ServletActionContext.getRequest(); Object[] temp = new Object[2]; temp[0] = this.fieldId; if (this.superArtId == 0) { temp[1] = new String("s"); } else { temp[1] = this.superArtId; } pageView = model.getArticlePageview(pageNum, temp, 10); List list = pageView.getPageList(); if (list != null) { this.articleList = list; field = model.getFieldByFieldId(this.fieldId); request.setAttribute("field", field); this.fieldName = field.getFieldName(); return "success"; } else { message = "找栏目ID下面的文章列表异常"; return "error"; } } } 4.model类://分页显示文章方法 public PageView getArticlePageview(int pageNum,Object[] values, int pageSize){ int totalNum=0; if(values[1].equals("s")){ Long t = (Long)values[0];
totalNum = artDao.findArticleByFieldId(t,0).size(); }else{ Long t = (Long)values[0]; Long t1 = (Long)values[1]; totalNum= artDao.findArticleByFieldId(t,t1).size(); } int pageTotal = 0; if(totalNum%pageSize != 0) { pageTotal = (int)(totalNum/pageSize)+1; } else { pageTotal = totalNum/pageSize; } int page = pageNum/pageSize+1; pageView.setTotalNum(totalNum); pageView.setPage(page); pageView.setPageTotal(pageTotal); pageView.setPageSize(pageSize); List pageArtList = artDao.getPageviewListForArt(pageNum,values, pageSize); if(pageArtList.size() != 0) { pageView.setPageList(pageArtList); } else { pageView.setPageList(new ArrayList()); } return pageView; }5.daoimpl类:class ArticleDaoImpl extends FindByHqlDaoImpl implements ArticleDaopublic List getPageviewListForArt(int pageNum, Object[] values, int pageSize) { String hql = ""; List list = new ArrayList(); Long fid = (Long)values[0]; Object aid = values[1]; if(aid.equals("s")){ hql = "from Article art where art.artArray is null and art.fieldId.fieldId=? order by art.artStatus desc,art.artSequence"; values[1]=null; System.out.println("null"+hql); list = findByHql(hql, fid, pageNum, pageSize); } else{ hql="from Article art where art.artArray.articleId=? and art.fieldId.fieldId=? order by art.artStatus desc, art.artSequence"; list = findByHql(hql, values, pageNum, pageSize);