1.创建分页工具类:
package cn.lichenyang.dms.entity;
import java.util.List;
/**
* 分页工具类
* @author Administrator
*
* @param <T>
*/
public class Pager<T> {
private int PageSize=10; //一页显示多少条
private int page=1; //第几页
private int firstIndex; //从第几个开始
private int total; //数据库中总记录数
private int totalPageCount; //共有多少页
private List<T> list; //显示多少条数据中所有对象所在的集合
private List<T> rows; //
private T entity; //需要分页的实体类
public List<T> getRows() {
return rows;
}
public void setRows(List<T> rows) {
this.rows = rows;
}
public T getEntity() {
return entity;
}
public void setEntity(T entity) {
this.entity = entity;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
this.rows = list;
}
public int getPageSize() {
return PageSize;
}
public void setPageSize(int pageSize) {
this.PageSize = pageSize;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getTotal() {
return total;
}
public void setTotal(int totalRecordCount) {
this.total = totalRecordCount;
}
public int getFirstIndex() {
return (this.getPage()-1)*this.getPageSize(); //返回从第几条数据开始
}
public int getTotalPageCount() {
return (this.getTotal()-1)/this.getPageSize()+1;//返回共多页
}
}
2.得到总记录数
//查询总记录数
public long getTotalRecordCount(Pager<T> pager) {
return (Long)this.getHibernateTemplate().find("select count(0) from Entity").get(0);
}
3.分页实现类,一下的所有T代表实体类,这里使用泛型表现出来的
public Pager<T> queryAllByPager(Pager<T> pager){
List<T> list = this.getHibernateTemplate().execute(new HibernateCallback<List<T>>() {
@Override
public List<T> doInHibernate(Session session) throws HibernateException {
// TODO Auto-generated method stub
String hql="from Entity";
Query query = session.createQuery(hql);
query.setFirstResult(pager.getFirstIndex()); //设置从第几条开始
query.setMaxResults(pager.getPageSize()); //设置一页显示多少条数据
return query.list(); //返回的是设置了第一条数据的索引到显示多少条的所有对象组成的集合
}
});
pager.setList(list); //把上面返回的集合设置给pager
pager.setTotal((int)this.getTotalRecordCount(pager)); //得到总记录数
return pager;
}
4.action中掉用的方法(private属性的get,set方法可能有些问题,复制粘贴的时候需要注意,private声明出的所有属性不要误删了),jsp界面中的代码就不copy出来了,根据easyui的规范来就行了
package cn.lichenyang.dms.web.action;
import java.util.List;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import cn.lichenyang.dms.entity.BcStaff;
import cn.lichenyang.dms.entity.Pager;
import cn.lichenyang.dms.service.IBcStaffService;
@Controller
@Scope("prototype")
@Namespace("/staff")
@ParentPackage("json-default")
public class BcStaffAction extends BaseAction {
@Autowired //接口
private IBcStaffService bcStaffService;
private Pager<BcStaff> pager;
private int page; //easy从界面中穿过来的page(固定)
private int rows; //接收easyui穿过来的页面大小(固定)
@Action(value="queryAllByPager",results= {
@Result(name="queryAllByPager",type="json",params= {"root","pager"})
})
public String queryAllByPager() {
if(pager == null) {
pager = new Pager<BcStaff>();
pager.setPage(page); //设置首页
pager.setPageSize(rows); //设置一页显示多少条数据
}
pager = bcStaffService.queryAllByPager(pager); //没有返回
return "queryAllByPager";
}
//=================================================================================
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getRows() {
return rows;
}
public void setRows(int rows) {
this.rows = rows;
}
public Pager<BcStaff> getPager() {
return pager;
}
public void setPager(Pager<BcStaff> pager) {
this.pager = pager;
}
public void setStaffs(List<BcStaff> staffs) {
this.staffs = staffs;
}
public List<BcStaff> getStaffs() {
return staffs;
}
}