后台操作除了增删改查,分页也是无可厚非的了。
首先我们来看下pageBean类
package cn.qxh.shop.utils; import java.util.ArrayList; import java.util.List; import cn.qxh.shop.product.vo.Product; /** * 分页类的封装 * @author qxh * */ public class PageBean<T> { private int page;//当前页 private int tatalPage;//总页数 private int counts;//总记录数 private int limit;//每页记录数 private List<T> list;//要分页的集合 public int getPage() { return page; } public void setPage(int page) { this.page = page; } public int getTatalPage() { return tatalPage; } public void setTatalPage(int tatalPage) { this.tatalPage = tatalPage; } public int getCounts() { return counts; } public void setCounts(int counts) { this.counts = counts; } 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; } }
此类使用泛化 拥有5私有属性:
page 当前显示页码数
page 由url传递过来,并由action使用setter方法接收
totalPage总页数
totalPage=Math.ceil(count/limit);
count 记录总数
limit 一页要显示的记录数
List<T> 为要查询的实体类
有关此类的查询我们来看下一个查询工具类
package cn.qxh.shop.utils; import java.sql.SQLException; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.orm.hibernate3.HibernateCallback; /** * * @author qxh * 执行分页查询的工具 * @param <T> */ public class PageHibernateCallback<T> implements HibernateCallback<List<T>>{ private String hql;//hql语句 private Object[] params;//根据对象数组参数查询如firstId private int startIndex;//开始查询记录处 private int pageSize;//每页记录数 /** * @param hql * @param params * @param startIndex * @param pageSize */ public PageHibernateCallback(String hql, Object[] params, int startIndex, int pageSize) { super();//如果没有写无参的构造方法,那么要显示的写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 查询记录一页结果,包括开始处的pageSize个结果 query.setFirstResult(startIndex); query.setMaxResults(pageSize); return query.list(); } }
此类实现HibernateCallback<List<T>>接口并重写方法
public List<T> doInHibernate(Session session) throws HibernateException,
SQLException {
此类有四个参数
一个是查询语句 一个是条件参数数值
一个是开始查询处
StartIndex=(page-1)*limit;
一个是 maxSize 一页显示的记录数
在Service层使用这两个工具类设置完pageBean的基本信息后就可将pageBan返回Action并存入值栈
ActionContext.getContext().getValueStack().set(“pageBean”,pageBean);
到时前台即可将数据取出完成分页查询
<s:iterator var=”c” value=”pageBean.list”>
<s:property value=”c.*”/>
</s:iterator>
时间: 2024-09-29 19:30:41