qq_21491991
2015-06-17 01:46
采纳率: 38.5%
浏览 2.1k
已采纳

SSH 怎么用hql实现分页 急

SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • On_Code 2015-06-17 02:18
    已采纳

    、在ArticleDao中添加分页查询的方法:

    /**
    * 分页查询
    * @param hql 查询的条件
    * @param offset 开始记录
    * @param length 一次查询几条记录
    * @return
    */
    public List queryForPage(final String hql,final int offset,final int length);

    /** *//**
     * 查询所有记录数
     * @param hql 查询的条件
     * @return 总记录数
     */
    public int getAllRowCount(String hql);
    

    二、在ArticleDaoImpl中给出相应方法的具体实现:

    /**

    • 查询所有记录数 *
    • @return 总记录数 */ public int getAllRowCount(String hql) { return getHibernateTemplate().find(hql).size(); }

    /**

    • 分页查询 *
    • @param hql
    • 查询的条件
    • @param offset
    • 开始记录
    • @param length
    • 一次查询几条记录
    • @return */ public List queryForPage(final String hql, final int offset, final int length) { List list = getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(hql); query.setFirstResult(offset); query.setMaxResults(length); List list = query.list(); return list; } }); return list; }

    三、在ArticleService中添加方法分页查询的方法:

    /**
    * 分页查询
    * @param currentPage 当前第几页
    * @param pageSize 每页大小
    * @return 封闭了分页信息(包括记录集list)的Bean
    */
    public PageBean queryForPage(int pageSize,int currentPage);

    四、在ArticleServiceImpl中给出相应方法的具体实现:

    /**

    • 分页查询
    • @param currentPage 当前第几页
    • @param pageSize 每页大小
    • @return 封闭了分页信息(包括记录集list)的Bean
      */
      public PageBean queryForPage(int pageSize,int page){

      final String hql = "from Article";

      int allRow = articleDao.getAllRowCount(hql);

      int totalPage = PageBean.countTotalPage(pageSize, allRow);

      final int offset = PageBean.countOffset(pageSize, page);

      final int length = pageSize;

      final int currentPage = PageBean.countCurrentPage(page);
      List list = articleDao.queryForPage(hql,offset, length); //"一页"的记录

      //把分页信息保存到Bean中
      PageBean pageBean = new PageBean();
      pageBean.setPageSize(pageSize);

      pageBean.setCurrentPage(currentPage);
      pageBean.setAllRow(allRow);
      pageBean.setTotalPage(totalPage);
      pageBean.setList(list);
      pageBean.init();

      return pageBean;
      }

    最后一步,根据需要,在分页页面上的相应位置进行配置。基本配置如下:


    首页
    上一页
    /s:if
    首页
    [url=...?page=上一页[/url]

    /s:else



    ">下一页


    ">尾页


    /s:if
    下一页
    尾页
    /s:else

    共 value="pageBean.allRow" />条记录, value="pageBean.totalPage" />页

    至此,网站的分页功能就完成了。

    打赏 评论
  • On_Code 2015-06-17 02:18

    、在ArticleDao中添加分页查询的方法:

    /**
    * 分页查询
    * @param hql 查询的条件
    * @param offset 开始记录
    * @param length 一次查询几条记录
    * @return
    */
    public List queryForPage(final String hql,final int offset,final int length);

    /** *//**
     * 查询所有记录数
     * @param hql 查询的条件
     * @return 总记录数
     */
    public int getAllRowCount(String hql);
    

    二、在ArticleDaoImpl中给出相应方法的具体实现:

    /**

    • 查询所有记录数 *
    • @return 总记录数 */ public int getAllRowCount(String hql) { return getHibernateTemplate().find(hql).size(); }

    /**

    • 分页查询 *
    • @param hql
    • 查询的条件
    • @param offset
    • 开始记录
    • @param length
    • 一次查询几条记录
    • @return */ public List queryForPage(final String hql, final int offset, final int length) { List list = getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(hql); query.setFirstResult(offset); query.setMaxResults(length); List list = query.list(); return list; } }); return list; }

    三、在ArticleService中添加方法分页查询的方法:

    /**
    * 分页查询
    * @param currentPage 当前第几页
    * @param pageSize 每页大小
    * @return 封闭了分页信息(包括记录集list)的Bean
    */
    public PageBean queryForPage(int pageSize,int currentPage);

    四、在ArticleServiceImpl中给出相应方法的具体实现:

    /**

    • 分页查询
    • @param currentPage 当前第几页
    • @param pageSize 每页大小
    • @return 封闭了分页信息(包括记录集list)的Bean
      */
      public PageBean queryForPage(int pageSize,int page){

      final String hql = "from Article";

      int allRow = articleDao.getAllRowCount(hql);

      int totalPage = PageBean.countTotalPage(pageSize, allRow);

      final int offset = PageBean.countOffset(pageSize, page);

      final int length = pageSize;

      final int currentPage = PageBean.countCurrentPage(page);
      List list = articleDao.queryForPage(hql,offset, length); //"一页"的记录

      //把分页信息保存到Bean中
      PageBean pageBean = new PageBean();
      pageBean.setPageSize(pageSize);

      pageBean.setCurrentPage(currentPage);
      pageBean.setAllRow(allRow);
      pageBean.setTotalPage(totalPage);
      pageBean.setList(list);
      pageBean.init();

      return pageBean;
      }

    最后一步,根据需要,在分页页面上的相应位置进行配置。基本配置如下:


    首页
    上一页
    /s:if
    首页
    [url=...?page=上一页[/url]

    /s:else



    ">下一页


    ">尾页


    /s:if
    下一页
    尾页
    /s:else

    共 value="pageBean.allRow" />条记录, value="pageBean.totalPage" />页

    至此,网站的分页功能就完成了。

    打赏 评论
  • chwrYy 2015-06-17 09:57

    /**
    * 总记录条数
    */
    @Override
    public int selectCount(BizClaimVoucher bcv, SysEmployee emp) {
    int count = 0;
    try {
    String hql = "from BizClaimVoucher where 1=1";
    if (emp != null) {
    hql += "and sysEmployeess.name='" + emp.getName() + "'";
    }

            if (bcv != null) {
    
                if (bcv.getStatus() != null && !bcv.getStatus().equals("全部")) {
                    hql += "and status ='" + bcv.getStatus() + "'";
                }
    
                if (bcv.getCreateTime() != null
                        && bcv.getCreateTime().equals("")) {
                    hql += "and createTime>=to_date('" + bcv.getCreateTime()
                            + "','YYYY-MM-DD HH24:MI:SS')";
                }
    
                if (bcv.getModifyTime() != null
                        && bcv.getModifyTime().equals("")) {
                    hql += "and modifyTime<=to_date('" + bcv.getModifyTime()
                            + "','YYYY-MM-DD HH24:MI:SS')";
                }
    
            }
    
            List list = this.getHibernateTemplate().find(hql);
            if (list != null) {
                count = list.size();
            }
    
        } catch (Exception e) {
            e.printStackTrace();
        }
        return count;
    }
    
    打赏 评论
  • chwrYy 2015-06-17 09:58

    /**
    * 查询分页
    */
    @Override
    public List query(final BizClaimVoucher bcv,
    final Integer curPage, final Integer pageSize, final SysEmployee emp) {
    List list = this.getHibernateTemplate().executeFind(
    new HibernateCallback() {

                    public Object doInHibernate(Session session)
                            throws HibernateException, SQLException {
                        String hql = "from BizClaimVoucher where 1=1";
                        if (emp != null) {
                            hql += "and sysEmployeess.name='" + emp.getName()
                                    + "'";
                        }
    
                        if (bcv != null) {
    
                            if (bcv.getStatus() != null
                                    && !bcv.getStatus().equals("全部")) {
                                hql += "and status ='" + bcv.getStatus() + "'";
                            }
    
                            if (bcv.getCreateTime() != null
                                    && bcv.getCreateTime().equals("")) {
                                hql += "and createTime>=to_date('"
                                        + bcv.getCreateTime()
                                        + "','YYYY-MM-DD HH24:MI:SS')";
                            }
    
                            if (bcv.getModifyTime() != null
                                    && bcv.getModifyTime().equals("")) {
                                hql += "and modifyTime<=to_date('"
                                        + bcv.getModifyTime()
                                        + "','YYYY-MM-DD HH24:MI:SS')";
                            }
    
                        }
    
                        Query query = null;
                        query = session.createQuery(hql);
                        query.setFirstResult((curPage - 1) * pageSize);
                        query.setMaxResults(pageSize);
    
                        return query.list();
                    }
    
                });
    
        return list;
    }
    
    打赏 评论
  • 另一花生 2015-06-18 15:42
    打赏 评论
  • zhang_zhongkang 2015-10-09 08:28

    最关键的就是query.setFirstResult(起始行) 还有一个方法就是query.setMaxResults(查询的长度) 每次改变的就是起始行 比如你一次想查询五行 长度就是5 第一次起始值就是0第二次起始值就是5 以此类推

    打赏 评论

相关推荐 更多相似问题