-
分页的 PageBean的代码
-
采用面向对象的方法,实现分页的技术!注:该代码基于 ssh 框架。
-
设置当前的页数,总记录数,总页数,每页显示的记录数,每页显示数据的集合。
-
Import java.utils
-
public class PageBean<T> {
-
private int page; // 当前页数
-
private int totalCount; // 总记录数
-
private int totalPage; // 总页数
-
private int limit; // 每页显示的记录数
-
private List<T> list; // 每页显示数据的集合 .
-
public int getPage() {
-
return page;
-
}
-
public void setPage(int page) {
-
this.page = page;
-
}
-
public int getTotalCount() {
-
return totalCount;
-
}
-
public void setTotalCount(int totalCount) {
-
this.totalCount = totalCount;
-
}
-
public int getTotalPage() {
-
return totalPage;
-
}
-
public void setTotalPage(int totalPage) {
-
this.totalPage = totalPage;
-
}
-
public int getLimit() {
-
return limit;
-
}
-
public void setLimit(int limit) {
-
this.limit = limit;
-
}
-
public List<T> getList() {
-
return list;
-
}
-
public void setList(List<T> list) {
-
this.list = list;
-
}
-
-
}
-
业务逻辑层的代码实现:
-
业务层根据用户 id 查询订单 , 带分页查询 .
-
public PageBean<Order> findByUid(Integer uid,Integer page) {
-
PageBean<Order> pageBean = new PageBean<Order>();
-
// 设置当前页数 :
-
pageBean.setPage(page);
-
// 设置每页显示记录数 :
-
// 显示 5 个
-
int limit = 5;
-
pageBean.setLimit(limit);
-
// 设置总记录数 :
-
int totalCount = 0;
-
totalCount = orderDao.findCountByUid(uid);
-
pageBean.setTotalCount(totalCount);
-
// 设置总页数
-
int totalPage = 0;
-
totalPage=totalCount%limit==0?totalCount/limit: totalCount / limit + 1;
-
pageBean.setTotalPage(totalPage);
-
// 设置每页显示数据集合 :
-
int begin = (page - 1)*limit;
-
List<Order> list = orderDao.findPageByUid(uid,begin,limit);
-
pageBean.setList(list);
-
return pageBean;
-
}
-
数据层的代码实现:
-
// Dao 层查询我的订单分页查询 : 统计个数
-
public int findCountByUid(Integer uid) {
-
String hql = "select count(*) from Order o where o.user.uid = ?";
-
List<Long> list = this.getHibernateTemplate().find(hql, uid);
-
if (list != null && list.size() > 0) {
-
return list.get(0).intValue();
-
}
-
return 0;
-
}
-
-
// Dao 层查询我的订单分页查询 : 查询数据
-
public List<Order> findPageByUid(Integer uid, int begin, int limit) {
-
String hql = "from Order o where o.user.uid = ? order by o.ordertime desc";
-
List<Order> list = this.getHibernateTemplate().execute(
-
new PageHibernateCallback<Order>(hql, new Object[] { uid },begin, limit));
-
if (list != null && list.size() > 0) {
-
return list;
-
}
-
return null;
-
}
-
-
PageHibernateCallBack<T> 的方法的实现:实现了 HibernateCallback<List<T>> 接口
-
package cn.itcast.shop.utils;
-
public class PageHibernateCallback<T> implements HibernateCallback<List<T>>{
-
-
private String hql;
-
private Object[] params;
-
private int startIndex;
-
private int pageSize;
-
-
public PageHibernateCallback(String hql, Object[] params,
-
int startIndex, int pageSize) {
-
super();
-
this.hql = hql;
-
this.params = params;
-
this.startIndex = startIndex;
-
this.pageSize = pageSize;
-
}
-
-
-
-
public List<T> doInHibernate(Session session) throws HibernateException,SQLException {
-
//1 执行 hql 语句
-
Query query = session.createQuery(hql);
-
//2 实际参数
-
if(params != null){
-
for(int i = 0 ; i < params.length ; i ++){
-
query.setParameter(i, params[i]);
-
}
-
}
-
//3 分页
-
query.setFirstResult(startIndex);
-
query.setMaxResults(pageSize);
-
-
return query.list();
-
}
-
-
}
分页的pageBean的实现
最新推荐文章于 2022-04-07 21:21:16 发布