//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层的方法进行相应的查询了
Hibernate实现分页 笔记
最新推荐文章于 2021-08-29 22:50:00 发布