Pager-taglib在项目中的使用 (四)

2014-11-24 10:53:18 · 作者: · 浏览: 2
erModel searchPaginated(String hql,Object param){
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 query.setParameter(i, params[i]);
}
}
//获取总的记录数
int total = ((Long)query.uniqueResult()).intValue();


//获取当前的结果集
query = getSession().createQuery(hql);
if(params != null && params.length>0){
for(int i=0;i query.setParameter(i, params[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