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=1]首页[/url]
[url=...?page=<s:property value=]">上一页[/url]
<span>…</span>
</s:else>
<span class=""><s:property value="pageBean.currentPage" /></span>
<s:if test="%{pageBean.currentPage != pageBean.totalPage}">
<span class="">…</span>
<a href="...?page=<s:property value="%{pageBean.currentPage+1}"/>">下一页

</a>
<a href="...?page=<s:property value="pageBean.totalPage"/>">尾页

</a>
</s:if> <s:else>
<span>下一页</span>
<span>尾页</span>
</s:else>

<span>共<s:property
value="pageBean.allRow" />条记录,<s:property
value="pageBean.totalPage" />页</span></div>
</div>
</div>

至此,网站的分页功能就完成了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值