Hibernate实现分页 笔记

来源:互联网 发布:鲁能泰山 网络直播 编辑:程序博客网 时间:2024/09/21 08:14
//1创建MyPagepackage 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 blocke.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层的方法进行相应的查询了


0 0
原创粉丝点击