ssh分页的实现

19 篇文章 0 订阅

前台显示每一页数据需要哪些参数?1当前页码;2总页码(由总记录数和每页记录数决定);3当前页的数据。这样就可以确定PageBean需要哪些变量了。

如何查询每一页数据?地址栏传递需要查询的页码。

数据库是如何查询的?setFirstResult((当前页码-1)*每页记录),setMaxResult(每页记录)。

总体的思路?记住分页的关键是获得PageBean对象,向前台传递PageBean对象。如何获得PageBean对象看注释。


PageBean.java

/**
 * PageBean类,用于分页
 * @author cbl
 *
 * @param <T>
 */
public class PageBean<T> {
	private Integer currentPage;  // 当前页数:地址栏传递过来的查询页码
	private Integer totalRecord;  // 总记录数:总页数/每页记录数,如果有余数,再+1
	private Integer totalPage;    // 总页数:数据库查询count(*)
	private Integer limit;        // 每页记录数:自己决定,想多少就多少
	private List<T> list;		  // 每页的数据:需要分页查询,setFirstResult和setMaxResult
	public Integer getCurrentPage() {
		return currentPage;
	}
	public void setCurrentPage(Integer currentPage) {
		this.currentPage = currentPage;
	}
	public Integer getTotalRecord() {
		return totalRecord;
	}
	public void setTotalRecord(Integer totalRecord) {
		this.totalRecord = totalRecord;
	}
	public Integer getTotalPage() {
		return totalPage;
	}
	public void setTotalPage(Integer totalPage) {
		this.totalPage = totalPage;
	}
	public Integer getLimit() {
		return limit;
	}
	public void setLimit(Integer limit) {
		this.limit = limit;
	}
	public List<T> getList() {
		return list;
	}
	public void setList(List<T> list) {
		this.list = list;
	}
	
}

PageHibernateCallback.java

/**
 * 分页callback类
 * @author cbl
 *
 * @param <T>
 */
public class PageHibernateCallback<T> implements HibernateCallback<List<T>> {
	
	private String hql;
	private int start;
	private int limit;
	private Object[] params;

	public PageHibernateCallback(String hql, int start, int limit,
			Object[] params) {
		super();
		this.hql = hql;
		this.start = start;
		this.limit = limit;
		this.params = params;
	}

	@Override
	public List<T> doInHibernate(Session session) throws HibernateException {
		Query query = session.createQuery(hql);
		// 设置参数
		if (params != null) {
			for (int i=0; i<params.length; i++) {
				query.setParameter(i, params[i]);
			}
		}
		query.setFirstResult(start);
		query.setMaxResults(limit);
		return query.list();
	}

}

查询

List<Product> productList = hibernateTemplate.execute(new PageHibernateCallback
	<Product>("from Product p where p.categorySecond.category.cid=?", 
		start, limit, new Object[]{cid}));



分页不简单,关键靠理解。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值