hibernate 组合查询且分页

[b]分页的核心代码[/b]


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 写的一个通用分页程序.
希望大家有更好的例子上传来给小弟学习学习
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值