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个回答

、在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" />页

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

、在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" />页

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

/**
* 查询分页
*/
@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;
}

/**
* 总记录条数
*/
@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;
}

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问