Hibernate实现分页 笔记

//1创建MyPage
package com.qqmail.util;


public class MyPageForMail {
	private int record;	// 总条数
	private int size =10;	// 每页显示几条
	private int current=1;	// 当前第几页
	private int count;	// 总页数


	public int getRecord() {
		return record;
	}


	public void setRecord(int record) {
		if (record % this.size == 0) {
			this.count = record / this.size;
		} else {
			this.count = record / this.size + 1;
		}
		this.record = record;
	}


	public int getSize() {
		return size;
	}


	public void setSize(int size) {
		this.size = size;
	}


	public int getCurrent() {
		return current;
	}


	public void setCurrent(int current) {
		this.current = current;
	}


	public int getCount() {
		return count;
	}


	public void setCount(int count) {
		this.count = count;
	}


	public MyPageForMail(int record, int size, int current, int count) {
		super();
		this.record = record;
		this.size = size;
		this.current = current;
		this.count = count;
	}


	public MyPageForMail() {
		super();
	}


}


//2、在DaoImpl中书写查询总记录条数方法


//使用查询列表长度的方法查询总记录条数
public int selectMailRecord() {
		try {
			Session session = sf.getCurrentSession();
			String str = "select * from Mail";
			List<Mail> mlist = session.createSQLQuery(str)
					.addEntity(Mail.class).list();
			int count = mlist.size();
			return count;
		} catch (HibernateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return -1;
	}




//3、在DaoImpl中书写根据MyPage内参数查询相应页面该显示的内容的方法


public List<Mail> selectByPage(MyPageForMail myPageForMail) {
		try {
			//创建session对象
			Session session = sf.getCurrentSession();
			//书写hql查询语句
			String str = "from Mail";
			//创建query对象
			Query query = session.createQuery(str);
			//设置第一条数据从哪开始
			//数据查询起点公式 (单页显示数目*(当前页-1)-1)+(当前页-(当前页-1))
			query.setFirstResult((myPageForMail.getSize()*(myPageForMail.getCurrent()-1)-1)+(myPageForMail.getCurrent()-(myPageForMail.getCurrent()-1)));
			//设置每页显示几条数据
			query.setMaxResults(myPageForMail.getSize());
			//创建列表接受数据
			List<Mail> list = query.list();
			//返回列表
			return list;
		} catch (HibernateException e) {
			e.printStackTrace();
		}
		return null;
	}




//4、在ServiceImpl中书写分页查询的方法 并限制‘当前页’属性的增量


public List<Mail> findMailByPage(MyPageForMail myPageForMail) {
		//获取到总记录条数
		int record = mailDao.selectMailRecord();
		//设置MyPage的总记录条数属性
		myPageForMail.setRecord(record);
		// 如果当前页小于第一页
		if (myPageForMail.getCurrent() < 1) {
			myPageForMail.setCurrent(1);
		}
		// 如果当前页大于第一页
		if (myPageForMail.getCurrent() > myPageForMail.getCount()) {
			myPageForMail.setCurrent(myPageForMail.getCount());
		}
		//参数设置完成之后调用DaoImpl的selectByPage的方法
		return mailDao.selectByPage(myPageForMail);
	}




//5、在与页面互动的过程中对MyPage类下的各个属性进行修改调用后便可联动DaoImpl层与ServiceImpl层的方法进行相应的查询了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值