SSH中怎样通过getHibernateTemplate()实现分页?我现在用的方法是:

Query query=getSession().createQuery(queryString);
query.setFirstResult((currentPage-1)*lineSize);
query.setMaxResults(lineSize); 
return query.list();
我的疑问是:
现在我的DAO既然继承了HibernateDaoSupport,怎样用HibernateDaoSupport中的方法实现分页或者
怎样用getHibernateTemplate()实现分页

解决方案 »

  1.   

    private List findXXX(final String hql, final int  firstResult, final int maxResults)   {       return getHibernateTemplate().executeFind(new HibernateCallback()  {       public   Object   doInHibernate(Session  s)  throws HibernateException,  SQLException   {    Query   query   =   s.createQuery(hql);  query.setFirstResult(firstResult);    query.setMaxResults(maxResults);    List list  = query.list();  return list;      }     });     }   说明:传入三个参数:一:hql查询语句,二:firstResult起始位置,需要事先计算好.三:maxResults:返回的记录数,对应页面上每页显示的记录数。
      

  2.   

    我以前也碰到了 我是用HibernateDaoSupport 来获得Session 以后再像你上面那种做法一样,
     
    但是这样似乎不是你要的做法
      

  3.   

    在ssh中实现分页方法,这样就可以了:/**
     * 
     * @param hql传入的hql语句
     * @param curPage当前页
     * @param pageSize每页显示大小
     * @return
     */
    public List doSplitPage(final String hql,final int curPage,final int pageSize){
    //调用模板的execute方法,参数是实现了HibernateCallback接口的匿名类,
    return (List) super.getHibernateTemplate().execute(new HibernateCallback(){
    //重写其doInHibernate方法返回一个object对象,
    public Object doInHibernate(Session session)
    throws HibernateException, SQLException {
    //创建query对象
    Query query=session.createQuery(hql);
    //返回其执行了分布方法的list
    return query.setFirstResult((curPage-1)*pageSize).setMaxResults(pageSize).list();

    }

    });

    }楼主试一试!
      

  4.   

    3楼的可以,
    如果要是结果集需要有分页信息的话,还需要在函数里先查询一下结果总数,然后构造一个自定义的pager对象,这个对象可以计算出首页,上一页,下一页,尾页,总页数,记录数等信息
      

  5.   

    public Set<Course> getAll(int pageNow,int pageSize) {
    // TODO Auto-generated method stub
    // System.out.println(getSession().createSQLQuery("select *from course limit 3"));
    // System.out.println(getHibernateTemplate().find("From Course").size());
    int totll=getHibernateTemplate().find("from Course").size();
    return new HashSet<Course>(getHibernateTemplate().find("select c from Course c")
    .subList(pageNow*pageSize>=totll?totll:pageNow*pageSize, 
    (pageNow*pageSize+pageSize)>=totll?totll:pageNow*pageSize+pageSize));
    }
    网上没找到有关getHibernateTemplate()方法来实现分页,自已写了一下可以参考,不过建意不要用这种方法来分页,可以用自已写个tag来实现分页很好用的