- 转自:http://fangzuoren.blog.hexun.com/30635503_d.html
- package com.aostarit.erp.dao;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
- import org.hibernate.Criteria;
- import org.hibernate.criterion.Criterion;
- import org.hibernate.criterion.Example;
- import org.hibernate.criterion.Projections;
- import org.hibernate.criterion.Restrictions;
- import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
- import com.aostarit.erp.util.Pager;
- public class ManagerDao extends HibernateDaoSupport
- {
- private Class entity;
- public Class getEntity()
- {
- return entity;
- }
- public void setEntity(Class entity)
- {
- this .entity = entity;
- }
- /**
- * @function 根据传递过来的hql语句,做相应的查询
- * @return 返回记录数的集合
- */
- public List getAllInfo(String hql)
- {
- List list = this .getHibernateTemplate().find(hql);
- return list;
- }
- /**
- * @function 根据传递过来的hql语句,做相应的查询
- * @return 将查询结果封装成Bean返回
- */
- public Object getBeanInfo(String hql)
- {
- List list = this .getHibernateTemplate().find(hql);
- return list.get( 0 );
- }
- /**
- * @function 查询抢修人员所以记录数
- * @return 返回记录数的个数
- */
- public int getTotalCount(String hql)
- {
- List list = this .getHibernateTemplate().find(hql);
- Integer i = (Integer) list.get( 0 );
- return i;
- }
- /**
- * @function 分页显示符合所有的记录数,将查询结果封装为Pager
- * @param pageNo
- * 当前页数
- * @param pageSize
- * 每页显示的条数
- * @return 查询结果Pager
- */
- public Pager findPageAll( int pageNo, int pageSize)
- {
- Pager pager = null ;
- try
- {
- Criteria criteria = this .getSession().createCriteria(
- this .getEntity());
- // 获取总行数
- int rowCount = (Integer) criteria.setProjection(
- Projections.rowCount()).uniqueResult();
- criteria.setProjection( null );
- criteria.setFirstResult((pageNo - 1 ) * pageSize);
- criteria.setMaxResults(pageSize);
- List result = criteria.list();
- pager = new Pager(pageSize, pageNo, rowCount, result);
- } catch (RuntimeException re)
- {
- throw re;
- } finally
- {
- return pager;
- }
- }
- /**
- * @function 分页显示符合所有的记录数,将查询结果封装为Pager
- * @param pageNo
- * 当前页数
- * @param pageSize
- * 每页显示的条数
- * @param map
- * 将查询条件封装为map
- * @return 查询结果Pager
- */
- public Pager findPageByCriteria( int pageNo, int pageSize, Map map)
- {
- Pager pager = null ;
- try
- {
- Criteria criteria = this .getSession().createCriteria(
- this .getEntity());
- if (map != null )
- {
- Set keys = map.keySet();
- for (String key : keys)
- {
- criteria.add(Restrictions.like(key, map.get(key)));
- }
- }
- // 获取根据条件分页查询的总行数
- int rowCount = (Integer) criteria.setProjection(
- Projections.rowCount()).uniqueResult();
- criteria.setProjection( null );
- criteria.setFirstResult((pageNo - 1 ) * pageSize);
- criteria.setMaxResults(pageSize);
- List result = criteria.list();
- pager = new Pager(pageSize, pageNo, rowCount, result);
- } catch (RuntimeException re)
- {
- throw re;
- } finally
- {
- return pager;
- }
- }
- /**
- * @function 分页显示符合所有的记录数,将查询结果封装为Pager
- * @param pageNo
- * 当前页数
- * @param pageSize
- * 每页显示的条数
- * @param criterions
- * 不定参数Criterion
- * @return 查询结果Pager
- */
- public Pager findPageByCriteria( int pageNo, int pageSize,
- Criterion... criterions)
- {
- Pager pager = null ;
- try
- {
- Criteria criteria = this .getSession().createCriteria(
- this .getEntity());
- if (criterions != null )
- {
- for (Criterion criterion : criterions)
- {
- if (criterion != null )
- {
- criteria.add(criterion);
- }
- }
- }
- // 获取根据条件分页查询的总行数
- int rowCount = (Integer) criteria.setProjection(
- Projections.rowCount()).uniqueResult();
- criteria.setProjection( null );
- criteria.setFirstResult((pageNo - 1 ) * pageSize);
- criteria.setMaxResults(pageSize);
- List result = criteria.list();
- pager = new Pager(pageSize, pageNo, rowCount, result);
- } catch (RuntimeException re)
- {
- throw re;
- } finally
- {
- return pager;
- }
- }
- /**
- * @function 根据传递过来的Object,在数据库中查找语气匹配的记录
- * @param pageNo
- * 当前页数
- * @param pageSize
- * 每页显示的记录数
- * @param object
- * 将查询条件封装为Object
- * @return 将查询结果封装为Pager返回
- */
- public Pager findPageByExample( int pageNo, int pageSize, Object object)
- {
- Pager pager = null ;
- try
- {
- Criteria criteria = this .getSession().createCriteria(
- this .getEntity());
- if (object != null )
- {
- criteria.add(Example.create(object).enableLike());
- }
- // 获取根据条件分页查询的总行数
- int rowCount = (Integer) criteria.setProjection(
- Projections.rowCount()).uniqueResult();
- criteria.setProjection( null );
- criteria.setFirstResult((pageNo - 1 ) * pageSize);
- criteria.setMaxResults(pageSize);
- List result = criteria.list();
- pager = new Pager(pageSize, pageNo, rowCount, result);
- } catch (RuntimeException re)
- {
- throw re;
- } finally
- {
- return pager;
- }
- }
- }
package com.aostarit.erp.dao;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.hibernate.Criteria;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Example;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.aostarit.erp.util.Pager;
public class ManagerDao extends HibernateDaoSupport
{
private Class entity;
public Class getEntity()
{
return entity;
}
public void setEntity(Class entity)
{
this.entity = entity;
}
/**
* @function 根据传递过来的hql语句,做相应的查询
* @return 返回记录数的集合
*/
public List getAllInfo(String hql)
{
List list = this.getHibernateTemplate().find(hql);
return list;
}
/**
* @function 根据传递过来的hql语句,做相应的查询
* @return 将查询结果封装成Bean返回
*/
public Object getBeanInfo(String hql)
{
List list = this.getHibernateTemplate().find(hql);
return list.get(0);
}
/**
* @function 查询抢修人员所以记录数
* @return 返回记录数的个数
*/
public int getTotalCount(String hql)
{
List list = this.getHibernateTemplate().find(hql);
Integer i = (Integer) list.get(0);
return i;
}
/**
* @function 分页显示符合所有的记录数,将查询结果封装为Pager
* @param pageNo
* 当前页数
* @param pageSize
* 每页显示的条数
* @return 查询结果Pager
*/
public Pager findPageAll(int pageNo, int pageSize)
{
Pager pager = null;
try
{
Criteria criteria = this.getSession().createCriteria(
this.getEntity());
// 获取总行数
int rowCount = (Integer) criteria.setProjection(
Projections.rowCount()).uniqueResult();
criteria.setProjection(null);
criteria.setFirstResult((pageNo - 1) * pageSize);
criteria.setMaxResults(pageSize);
List result = criteria.list();
pager = new Pager(pageSize, pageNo, rowCount, result);
} catch (RuntimeException re)
{
throw re;
} finally
{
return pager;
}
}
/**
* @function 分页显示符合所有的记录数,将查询结果封装为Pager
* @param pageNo
* 当前页数
* @param pageSize
* 每页显示的条数
* @param map
* 将查询条件封装为map
* @return 查询结果Pager
*/
public Pager findPageByCriteria(int pageNo, int pageSize, Map map)
{
Pager pager = null;
try
{
Criteria criteria = this.getSession().createCriteria(
this.getEntity());
if (map != null)
{
Set keys = map.keySet();
for (String key : keys)
{
criteria.add(Restrictions.like(key, map.get(key)));
}
}
// 获取根据条件分页查询的总行数
int rowCount = (Integer) criteria.setProjection(
Projections.rowCount()).uniqueResult();
criteria.setProjection(null);
criteria.setFirstResult((pageNo - 1) * pageSize);
criteria.setMaxResults(pageSize);
List result = criteria.list();
pager = new Pager(pageSize, pageNo, rowCount, result);
} catch (RuntimeException re)
{
throw re;
} finally
{
return pager;
}
}
/**
* @function 分页显示符合所有的记录数,将查询结果封装为Pager
* @param pageNo
* 当前页数
* @param pageSize
* 每页显示的条数
* @param criterions
* 不定参数Criterion
* @return 查询结果Pager
*/
public Pager findPageByCriteria(int pageNo, int pageSize,
Criterion... criterions)
{
Pager pager = null;
try
{
Criteria criteria = this.getSession().createCriteria(
this.getEntity());
if (criterions != null)
{
for (Criterion criterion : criterions)
{
if (criterion != null)
{
criteria.add(criterion);
}
}
}
// 获取根据条件分页查询的总行数
int rowCount = (Integer) criteria.setProjection(
Projections.rowCount()).uniqueResult();
criteria.setProjection(null);
criteria.setFirstResult((pageNo - 1) * pageSize);
criteria.setMaxResults(pageSize);
List result = criteria.list();
pager = new Pager(pageSize, pageNo, rowCount, result);
} catch (RuntimeException re)
{
throw re;
} finally
{
return pager;
}
}
/**
* @function 根据传递过来的Object,在数据库中查找语气匹配的记录
* @param pageNo
* 当前页数
* @param pageSize
* 每页显示的记录数
* @param object
* 将查询条件封装为Object
* @return 将查询结果封装为Pager返回
*/
public Pager findPageByExample(int pageNo, int pageSize, Object object)
{
Pager pager = null;
try
{
Criteria criteria = this.getSession().createCriteria(
this.getEntity());
if (object != null)
{
criteria.add(Example.create(object).enableLike());
}
// 获取根据条件分页查询的总行数
int rowCount = (Integer) criteria.setProjection(
Projections.rowCount()).uniqueResult();
criteria.setProjection(null);
criteria.setFirstResult((pageNo - 1) * pageSize);
criteria.setMaxResults(pageSize);
List result = criteria.list();
pager = new Pager(pageSize, pageNo, rowCount, result);
} catch (RuntimeException re)
{
throw re;
} finally
{
return pager;
}
}
}
BO层代码如下:
- package com.aostarit.erp.bo;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import org.hibernate.criterion.Criterion;
- import org.hibernate.criterion.MatchMode;
- import org.hibernate.criterion.Restrictions;
- import com.aostarit.erp.dao.MendManagerDao;
- import com.aostarit.erp.po.EicMend;
- import com.aostarit.erp.util.Pager;
- public class MendBo
- {
- /**
- * 依靠Spring的依赖注入,注入抢修人员的Dao
- */
- private MendManagerDao mendManagerDao;
- public MendManagerDao getMendManagerDao()
- {
- return mendManagerDao;
- }
- public void setMendManagerDao(MendManagerDao mendManagerDao)
- {
- this .mendManagerDao = mendManagerDao;
- try
- {
- // 设置该BO操作所对应的pojo
- this .mendManagerDao.setEntity(Class
- .forName( "com.aostarit.erp.po.EicMend" ));
- } catch (ClassNotFoundException e)
- {
- e.printStackTrace();
- }
- }
- /**
- * @function 根据传递过来的列名,在数据库中查询该列不重复的记录,前台用下拉框显示
- * @param column
- * 传递过来的列名
- * @return 该列不重复的记录
- */
- public List getColumn(String column)
- {
- String table = "EicMend" ;
- StringBuffer hql = new StringBuffer();
- hql.append( "select distinct(" ).append(column).append( ") from " ).append(
- table).append( " where " ).append(column).append( " is not null" );
- return mendManagerDao.getAllInfo(hql.toString());
- }
- /**
- * @function 根据传递过来的分页的参数,分页查找数据库中的记录
- * @param pageNo
- * 当前的页码
- * @param pageSize
- * 每页显示的记录数
- * @return 符合条件的记录数
- */
- public Pager getAllInfo( int pageNo, int pageSize)
- {
- Pager pager = mendManagerDao.findPageAll(pageNo, pageSize);
- return pager;
- }
- /**
- * @function 将传递过来的参数封装成抢修人员Bean,分页查询符合条件的记录
- * @param pageNo
- * 当前的页码
- * @param pageSize
- * 每页显示的记录数
- * @param mendName
- * @param specialt
- * @param post
- * @return 将符合条件的记录数以及页码信息封装成PagerBean返回
- */
- public Pager getInfoByQuery1( int pageNo, int pageSize, String mendName,
- String specialty, String post)
- {
- EicMend eicMend = new EicMend();
- if (mendName != null && mendName.length() > 0 )
- {
- eicMend.setMendname(mendName);
- }
- if (specialty != null && specialty.length() > 0 )
- {
- eicMend.setSpecialty(specialty);
- }
- if (post != null && post.length() > 0 )
- {
- eicMend.setPost(post);
- }
- Pager pager = mendManagerDao.findPageByExample(pageNo, pageSize,
- eicMend);
- return pager;
- }
- /**
- * @function 将传递过来的参数封装成抢修人员Bean,分页查询符合条件的记录
- * @param pageNo
- * 当前的页码
- * @param pageSize
- * 每页显示的记录数
- * @param mendName
- * 抢修人员的名称
- * @param specialty
- * 抢修人员的工种
- * @param post
- * 抢修人员的职称
- * @return 将符合条件的记录数以及页码信息封装成PagerBean返回
- */
- public Pager getInfoByQuery2( int pageNo, int pageSize, String mendName,
- String specialty, String post)
- {
- Map map = new HashMap();
- if (mendName != null && mendName.length() > 0 )
- {
- map.put( "mendname" , "%" + mendName + "%" );
- }
- if (specialty != null && specialty.length() > 0 )
- {
- map.put( "specialty" , specialty);
- }
- if (post != null && post.length() > 0 )
- {
- map.put( "post" , post);
- }
- Pager pager = mendManagerDao.findPageByCriteria(pageNo, pageSize, map);
- return pager;
- }
- /**
- * @function 将传递过来的参数封装成抢修人员Bean,分页查询符合条件的记录
- * @param pageNo
- * 当前的页码
- * @param pageSize
- * 每页显示的记录数
- * @param mendName
- * 抢修人员的名称
- * @param specialty
- * 抢修人员的工种
- * @param post
- * 抢修人员的职称
- * @return 将符合条件的记录数以及页码信息封装成PagerBean返回
- */
- public Pager getInfoByQuery3( int pageNo, int pageSize, String mendName,
- String specialty, String post)
- {
- Criterion criterion1 = null , criterion2 = null , criterion3 = null ;
- if (mendName != null && mendName.length() > 0 )
- {
- criterion1 = Restrictions.ilike( "mendname" , mendName,
- MatchMode.ANYWHERE);
- }
- if (specialty != null && specialty.length() > 0 )
- {
- criterion2 = Restrictions.ilike( "specialty" , specialty,
- MatchMode.EXACT);
- }
- if (post != null && post.length() > 0 )
- {
- criterion3 = Restrictions.ilike( "post" , post, MatchMode.EXACT);
- }
- Pager pager = mendManagerDao.findPageByCriteria(pageNo, pageSize,
- criterion1, criterion2, criterion3);
- return pager;
- }
- /**
- * @function 根据所属单位的Id,分页查询相关信息
- * @param pageNo
- * 当前页码
- * @param pageSize
- * 每页显示的记录数
- * @param deptId
- * 所属单位的Id
- * @return 将符合条件的记录数以及页码信息封装成PagerBean返回
- */
- public Pager getInfoByDept( int pageNo, int pageSize, String deptId)
- {
- Criterion criterion1 = null ;
- if (deptId != null && deptId.length() > 0 )
- {
- criterion1 = Restrictions.ilike( "aorganization.orgCode" , deptId,
- MatchMode.EXACT);
- }
- Pager pager = mendManagerDao.findPageByCriteria(pageNo, pageSize,
- criterion1);
- return pager;
- }
- /**
- * @function 根据抢修人员的主键Id,查询抢修人员的详细信息
- * @param equipId
- * 抢修人员的主键
- * @return 将查询结果封装成抢修人员Bean返回
- */
- public EicMend getBeanInfo(String mendId)
- {
- StringBuffer hql = new StringBuffer();
- hql.append( "from EicMend e where e.mendid = " ).append(mendId);
- return (EicMend) mendManagerDao.getBeanInfo(hql.toString());
- }
- }