[b]分页的核心代码[/b]
[b]把分页的数据用一个实体对象保存[/b]
用hibernate 写的一个通用分页程序.
希望大家有更好的例子上传来给小弟学习学习
package com.crm.dao;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Example;
import org.hibernate.criterion.MatchMode;
//hibernate 自动创建的一个工厂类
import com.crm.util.HibernateSessionFactory;
public class SplitDAO {
//获得总共显示的页数,参数:allRows 总行数,pageSize 每页显示的行数
private int getPages(int allRows, int pageSize) {
return (allRows + pageSize - 1) / pageSize;
}
/*
* 获得总页数<br>
* parameter<br>
* Object obj 类对象<br>
* int pageSize 查询几条数据<br>
* int currPage 当前是第几页
* */
public SplitBean split(Object obj, int pageSize, int currPage) throws Exception{
SplitBean sb = new SplitBean();
try{
Session session = HibernateSessionFactory.getSession();
Criteria cta = session.createCriteria(obj.getClass());
// qbe不能用主键查询
Example ex = Example.create(obj);
ex.ignoreCase().enableLike(MatchMode.ANYWHERE);
ex.excludeNone();
ex.excludeZeroes();
cta.add(ex);
//获得有多少条数据
List list = cta.list();
//总行数
int allRows = list.size();
//数据验证
pageSize = pageSize<=0?10:pageSize;
//所有显示的页数
int pages = getPages(allRows,pageSize);
//如果输入的当前页大于最大页数
currPage=currPage > pages?pages:currPage;
//如果输入的当前页小于等于0
currPage=currPage<=0?1:currPage;
cta.setFirstResult((currPage - 1) * pageSize);//设置起始查询的位置
cta.setMaxResults(pageSize); //设置一次最多查多少条数据
List list2 = cta.list(); //查询出需要的数据
//对封装类进行设置数据
sb.setContent(list2);
sb.setCurrPage(currPage);
sb.setPageSize(pageSize);
sb.setPages(pages);
sb.setAllRows(allRows);
}finally{
HibernateSessionFactory.closeSession();
}
return sb;
}
}
[b]把分页的数据用一个实体对象保存[/b]
package com.crm.dao;
//封装分页显示数据类
import java.util.List;
public class SplitBean {
private int allRows; //总行数
private int pageSize; //显示行数
private int currPage; //当前页数
private int pages; //总页数
private List content; //显示数据
public int getAllRows() {
return allRows;
}
public void setAllRows(int allRows) {
this.allRows = allRows;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getCurrPage() {
return currPage;
}
public void setCurrPage(int currPage) {
this.currPage = currPage;
}
public List getContent() {
return content;
}
public void setContent(List content) {
this.content = content;
}
public int getPages() {
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
}
用hibernate 写的一个通用分页程序.
希望大家有更好的例子上传来给小弟学习学习