使用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) {

}

}

猜你喜欢

转载自xue-zhang.iteye.com/blog/1074080
今日推荐