首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

SSH网站分页技术的运用

2012-07-19 
SSH网站分页技术的使用一、在ArticleDao中添加分页查询的方法:/*** 分页查询* @param hql 查询的条件* @par

SSH网站分页技术的使用
一、在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<Article> 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 test="%{pageBean.currentPage == 1}">
<span>首页</span>
<span>上一页</span>
</s:if> <s:else>
首页
[url=...?page=<s:property value=]">上一页[/url]
<span>…</span>
</s:else>
<span /></span>
<s:if test="%{pageBean.currentPage != pageBean.totalPage}">
<span />条记录,<s:property
value="pageBean.totalPage" />页</span></div>
</div>
</div>

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

热点排行