使用Hibernate进行分页的实现
使用Hibernate进行分页的实现[/color][/size][/align]
某个类---映射的表进行实现分页技术
查询的表的记录过程————————只是获取当前页的信息
首页:0-----4
当前页:
上一页:当前页-1
下一页:当前页+1
最后一页:末页
每页显示的记录数是多少呢? 5
查询当前页的信息
-------------------------------------
当前页在表中的起始位置及结束位置.
--------------------------------------
递增序列 姓名 起始位置:
1 0
2
3
4
6
8
100
101
102
103
104
200
比如在这里:
//每页显示记录数
private Integer pagesize=5;
//定义当前页变量
private Integer nowpage;
//写出当前页显示的记录的开始位置:
当前页 每页显示的记录数 当前页开始的位置 当前页结束的位置
1 5 0 4
2 5 5
3 10
4 5 15
5 20
6 25
-----------------------------------------------------
当前页的起始位置=====(nowpage-1)*pagesize 起始位置。
末页:
select count(*) from 表名;
//总记录数
private Integer countRecord; 有每页显示的条数
总页数:末页值
private Integer countPage;//总页数
countPage = countRecord%pagesize==0?countRecord/pagesize:countRecord/pagesize+1;
及结束位置
[align=center][size=x-small][color=red]代码
package cn.zhang.page;
import java.sql.SQLException;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
//分页的实现类
public class Pagination extends HibernateDaoSupport {
// 每页显示的记录数
private final Integer PAGESIZE = 5;
// 总记录数
private Integer countrecord;
// 总页数
private Integer countpage;
// 当前页
private Integer nowpage;
// 每页显示的信息
private List list;
// 查询当前页的信息
public void getNowPageInfo(int nowpage, final String className) {
// 获取总记录数
long cr = (Long) this.getHibernateTemplate().find("select count(*) from " + className +" as c").get(0);
this.countrecord = (int) cr;
// 计算总页数
this.countpage = this.countrecord % this.PAGESIZE == 0 ? this.countrecord
/ this.PAGESIZE
: this.countrecord / this.PAGESIZE + 1;
// 判断当前页的值是否合法
if (nowpage <= 1) {
this.nowpage = 1;
}
if (nowpage >= this.countpage) {
this.nowpage = this.countpage;
}
// 计算起始位置
final int startindex = (this.nowpage - 1) * PAGESIZE;
this.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
// hiberante支持的分页
list = session.createQuery(" from "+className)
.setMaxResults(PAGESIZE).setFirstResult(startindex)
.list();
return list;
}
});
}
public Integer getCountrecord() {
return countrecord;
}
public void setCountrecord(Integer countrecord) {
this.countrecord = countrecord;
}
public Integer getCountpage() {
return countpage;
}
public void setCountpage(Integer countpage) {
this.countpage = countpage;
}
public Integer getNowpage() {
return nowpage;
}
public void setNowpage(Integer nowpage) {
this.nowpage = nowpage;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public static void main(String[] args) {
}
}