自定义分页功能的实现代码

来源:互联网 发布:福州大学软件学院 编辑:程序博客网 时间:2024/05/16 15:08

public class PageBean {
//1.当前页
private Integer currentPage;
//2.总记录数
private Integer totalCount;
//3.每页显示的记录数
private Integer pageSize;
//4.总页数
private Integer totalPage;
//5.开始位置
private Integer begin;
//6.每页记录的list集合
private List<Customer> list;
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public Integer getTotalCount() {
return totalCount;
}
public void setTotalCount(Integer totalCount) {
this.totalCount = totalCount;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getTotalPage() {
return totalPage;
}
public void setTotalPage(Integer totalPage) {
this.totalPage = totalPage;
}
public Integer getBegin() {
return begin;
}
public void setBegin(Integer begin) {
this.begin = begin;
}
public List<Customer> getList() {
return list;
}
public void setList(List<Customer> list) {
this.list = list;
}


}

Controller层代码

//分页方法
public String listPage(){
//调用service的方法
PageBean pageBean =customerService.listPage(currentPage);
ServletActionContext.getRequest().setAttribute("pageBean", pageBean);
return "listPage";
}

Service层代码

//封装分页的数据到pagebean对象里面
public PageBean listPage(Integer currentPage) {
//创建pagebean的对象
PageBean pageBean = new PageBean();
//当前页
pageBean.setCurrentPage(currentPage);
//总记录数
int totalCount = customerDao.findCount();
pageBean.setTotalCount(totalCount);
//每页显示记录数
int pageSize = 2;
//总页数
int totalPage = 0;
if(totalCount%pageSize==0){
totalPage = totalCount/pageSize;
}else{
totalPage = totalCount/pageSize+1;
}
pageBean.setTotalPage(totalPage);

//开始位置
int begin = (currentPage-1)*pageSize;
pageBean.setBegin(begin);
//每页记录的list集合

List<Customer> list = customerDao.findPage(begin,pageSize);
pageBean.setList(list);

return pageBean;
}

Dao层代码实现

//查询记录数
public int findCount() {
List<Object> list = (List<Object>) this.getHibernateTemplate().find("select count(*) from Customer");
if(list!=null&&list.size()!=0){
Object obj = list.get(0);
//变成int类型
Long lobj = (Long)obj;
int count = lobj.intValue();
return count;
}
return 0;
}


@Override
public List<Customer> findPage(int begin, int pageSize) {
//第一种:使用hibernate底层代码实现(了解)
/*SessionFactory sessionFactory = this.getHibernateTemplate().getSessionFactory();
Session session = sessionFactory.getCurrentSession();
Query query = session.createQuery("from Customer");
query.setFirstResult(begin);
query.setMaxResults(pageSize);

List<Customer> list = query.list();
*/
//第二种:使用离线对象和hibernateTemplate的方法实现
//1.创建离线对象,设置对哪个实体类进行操作
DetachedCriteria criteria = DetachedCriteria.forClass(Customer.class);
//2.调用hibernateTemplate中的方法
//第一个参数:是离线对象
//第二个参数:是开始位置
//第三个参数:是每页记录数
List<Customer> list = (List<Customer>) this.getHibernateTemplate().findByCriteria(criteria, begin, pageSize);
return list;
}

阅读全文
0 0
原创粉丝点击