return searchPaginated(hql,new Object[]{param},SystemContext.getOffset(),SystemContext.getPagesize());
}
public PagerModel searchPaginated(String hql,Object[] params){
return searchPaginated(hql,params,SystemContext.getOffset(),SystemContext.getPagesize());
}
/**
* 没有参数
* @param hql
* @param offset
* @param pagesize
* @return
*/
public PagerModel searchPaginated(String hql,int offset,int pagesize){
return searchPaginated(hql,null,offset,pagesize);
}
/**
* 只有一个参数
* @param hql
* @param obj
* @param offset
* @param pagesize
* @return
*/
public PagerModel searchPaginated(String hql,Object obj,int offset,int pagesize){
return searchPaginated(hql,new Object[]{obj},offset,pagesize);
}
/**
* 根据hql语句进行分页查询
* @param hql
* @param params HQL语句带的多个参数值.
* @param offset 从第几条记录开始查询
* @param pagesize 总共要显示的页数.
* @return
*/
public PagerModel searchPaginated(String hql,Object[] params,int offset,int pagesize){
//第一步:获取总记录数.
//获取总数的查询语句
String countHql=getCountQuery(hql);
//创建查询对象.
Query query =getSession().createQuery(countHql);
//通过循环将参数设置到语句中.
if(params != null && params.length>0){
for(int i=0;i
}
}
//获取总的记录数
int total = ((Long)query.uniqueResult()).intValue();
query = getSession().createQuery(hql);
if(params != null && params.length>0){
for(int i=0;i
}
}
//设置参数
query.setFirstResult(offset);
query.setMaxResults(pagesize);
//获取结果集.
List datas=query.list();
//创建PagerModel对象.
PagerModel pm = new PagerModel();
pm.setDatas(datas);
pm.setTotal(total);
return pm;
}
/**
* 根据HQL语句,获得查找总记录数的HQL语句.
* @param hql
* @return
*/
private String getCountQuery(String hql) {
//根据from字截取查询语句.
int index = hql.indexOf("from");
if(index != -1){
return "select count(*) " + hql.substring(index);
}
throw new SystemException("无效的HQL查询语句!");
}
}
package com.tgb.oa.manager.impl;
import java.util.List;
import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.tgb.oa.PagerModel;
import com.tgb.oa.SystemContext;
import com.tgb.oa.manager.SystemException;
/**
*
* 抽象分页查询.
* @author jnqqls