先上一个简单的效果图:
首先先建立一个实体类
package com.entities;
import java.util.List;
public class PageBean<T> {
private int currPage; //当前页数
private int pageSize; //每页显示的记录数
private int totalCount; //总记录数
private int totalPage; //总页数
private List<T> list; //每页显示的数据
public int getCurrPage() {
return currPage;
}
public void setCurrPage(int currPage) {
this.currPage = currPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
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 List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
}
写action的方法:
private Integer currPage = 1;
public void setCurrPage(Integer currPage) {
this.currPage = currPage;
}
public String findAllOnPage(){
PageBean<AdminUsers> pageBean = adminUsersService.findByPage(currPage);
ActionContext.getContext().getValueStack().push(pageBean);
return "showList";
}
注意,这里定义currPage为1,也防止了页面上可能会出现负数的页数的情况
service:
public PageBean<AdminUsers> findByPage(Integer currPage) {
PageBean<AdminUsers> pageBean = new PageBean<AdminUsers>();
//封装当前页数
pageBean.setCurrPage(currPage);
//封装每页显示记录数
int pageSize = 5;
pageBean.setPageSize(pageSize);
//封装总记录数
int totalCount = adminUsersDao.findCount();
pageBean.setTotalCount(totalCount);
//封装总页数
double tc = totalCount;
Double num = Math.ceil(tc / pageSize);
pageBean.setTotalPage(num.intValue());
//封装每页显示的数据
int begin = (currPage - 1) * pageSize;
List<AdminUsers> list = adminUsersDao.findByPage(begin,pageSize);
pageBean.setList(list);
return pageBean;
}
dao层:
public int findCount() {
String hql = "select count(*) from AdminUsers";
Query query = getSession().createQuery(hql);
List<Long> list = query.list();
if(list.size() > 0){
return list.get(0).intValue();
}
return 0;
}
public List<AdminUsers> findByPage(int begin, int pageSize) {
Criteria c = getSession().createCriteria(AdminUsers.class);
c.setFirstResult(begin);
c.setMaxResults(pageSize);
List<AdminUsers> list = c.list();
return list;
}