分页显示代码

package cn.java.beans;

import java.util.List;

public class Page<T> {
	private List<T> list;
	private int totalRecord; //总记录数
	private int pageSize=2;  //页面大小
	private int totalPage;    //总页数
	private int startIndex;   //查询开始索引
	private int pageNum;  //用户想看的当前页码
	
	private int startPage;  //jsp页面的起始页
	private int endPage;//jsp页面的结尾页
	
	public Page(int totalRecord_,int pageNum_){
		this.totalRecord=totalRecord_;
		//算出总页数
		if(this.totalRecord%this.pageSize==0){
			this.totalPage=this.totalRecord/this.pageSize;
		}else{
			this.totalPage=this.totalRecord/this.pageSize+1;
		}
		this.pageNum=pageNum_;
		//数据库查询索引开始位置 
		this.startIndex=(this.pageNum-1)*this.pageSize;
		//jsp页面索引每次显示10条
		if(this.totalPage<10){
			this.startPage=1;
			this.endPage=this.totalPage;
		}else{
			//每次显示10页
			this.startPage=this.pageNum-4;
			this.endPage=this.pageNum+5;
			

			if(this.startPage<1){
				this.startPage=1;
				this.endPage=10;
			}
			if(this.endPage>this.totalPage){
				this.endPage=this.totalPage;
				this.startPage=this.totalPage-9;
			}
		}
	}


	public int getStartPage() {
		return startPage;
	}


	public void setStartPage(int startPage) {
		this.startPage = startPage;
	}


	public int getEndPage() {
		return endPage;
	}


	public void setEndPage(int endPage) {
		this.endPage = endPage;
	}


	public List<T> getList() {
		return list;
	}


	public void setList(List<T> list) {
		this.list = list;
	}


	public int getTotalRecord() {
		return totalRecord;
	}


	public void setTotalRecord(int totalRecord) {
		this.totalRecord = totalRecord;
	}


	public int getPageSize() {
		return pageSize;
	}


	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}


	public int getTotalPage() {
		return totalPage;
	}


	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}


	public int getStartIndex() {
		return startIndex;
	}


	public void setStartIndex(int startIndex) {
		this.startIndex = startIndex;
	}


	public int getPageNum() {
		return pageNum;
	}


	public void setPageNum(int pageNum) {
		this.pageNum = pageNum;
	}
	
}

page类封装页面的一些具体数据,通过构造函数中传入总记录数(一般可以用dao查询出总记录数传入)利用pageSize求出总的页码数,根据用户想看的页码数求出数据库应该从哪一条记录开始查询,利用用户想看的页码数求出前后总共应该显示的页码数。List主要用来记录从数据库查询出的具体哪一页应该显示的数据。

//查询指定用户的分页数据
	@Override
	public List<Article> getPageData(int startIndex, int pageSize,
			String userName) {
		return sessionFactory.getCurrentSession().createQuery("from Article where username=? order by date desc")
		.setString(0, userName)
		.setFirstResult(startIndex)
		.setMaxResults(pageSize).list(); 
	}
这是dao的查询语句,用Hibernate写的。
@Override
	public Page getPageData(String pageNum,String userName) {
		if(pageNum==null){
			 Page page=new Page(articleDao.getUserTotalCount(userName), 1);
			 List<Article> list=articleDao.getPageData(page.getStartIndex(), page.getPageSize(),userName);
			 page.setList(list);
			 return page;
		}else{
			 Page page=new Page(articleDao.getUserTotalCount(userName),Integer.parseInt(pageNum));
			 List<Article> list=articleDao.getPageData(page.getStartIndex(), page.getPageSize(),userName);
			 page.setList(list);
			 return page;
		}
具体在service层进行业务逻辑的组装。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值