abstractmanager.java
来自「这个主要是办公自动化系统的源代码」· Java 代码 · 共 95 行
JAVA
95 行
package com.ygp.oa.managers.impl;
import java.util.List;
import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.ygp.oa.PagerModel;
import com.ygp.oa.SystemContext;
import com.ygp.oa.managers.SystemException;
public class AbstractManager extends HibernateDaoSupport{
//为了增加扩展性,多设置接口,有一个无参数的,有一个参数的
public PagerModel searchPaginated(String hql){
return searchPaginated(hql,null,SystemContext.getOffset(),SystemContext.getPagesize());
}
public PagerModel 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,new Object[]{params},SystemContext.getOffset(),SystemContext.getPagesize());
}
public PagerModel searchPaginated(String hql,int offset,int pagesize){
return searchPaginated(hql,null,offset,pagesize);
}
public PagerModel searchPaginated(String hql,Object obj,int offset,int pagesize){
return searchPaginated(hql,new Object[]{obj},offset,pagesize);
}
/**
* 根据hql语句进行分页查询
* @param hql hql语句
* @param params HQL语句带的多个参数值
* @param offset 从第几条进行查询
* @param pagesize 每页显示多少行
* @return
*/
public PagerModel searchPaginated(String hql,Object[]params,int offset,int pagesize){
//获取查询总记录
String countHql=getCountQuery(hql);
//需要引入import org.hibernate.Query;
Query query=getSession().createQuery(countHql);
if(params!=null&¶ms.length>0){
for(int i=0;i<params.length;i++){
query.setParameter(i, params[i]);
}
}
//count查询后是long类型
int total=((Long)query.uniqueResult()).intValue();
//获取当前结果
query=getSession().createQuery(hql);
if(params!=null&¶ms.length>0){
for(int i=0;i<params.length;i++){
query.setParameter(i, params[i]);
}
}
query.setFirstResult(offset);
query.setMaxResults(pagesize);
//查询出来之后放到datas
List datas=query.list();
//创建pagermodel
PagerModel pm=new PagerModel();
pm.setDatas(datas);
pm.setTotal(total);
return pm;
}
/**
* 根据HQL语句,获得查询总记录数的HQL语句
* 如:
* select ....from Orgnization o where o.parent is null
* 经过转换可得到
* select count(*) from Orgnization o where o.parent is null
* @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查询");
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?