2.BasicQueryUpdateDao完成几个较为通用的几个功能
包括获取记录总数count、获取一个列表list、获得唯一结果unique。
package cn.fansunion.hibernate; import java.util.List; import java.util.Map; import org.hibernate.Query; import cn.fansunion.hibernate.util.EmptyUtils; import cn.fansunion.hibernate.util.PageConstants; import cn.fansunion.hibernate.util.PageUtils; import cn.fansunion.hibernate.util.Pair; /** * 完成基本的查询操作。 * * @author LeiWen@FansUnion.cn */ public class BasicQueryUpdateDaoextends CrudDao { public static final boolean NOT_PAGE = false; public static final boolean NEED_PAGE = true; // /////////////////////////////////////////////// // ////////////获取记录总数///////////////////////// // /////////////////////////////////////////////// public Integer count(String hql) { Query query = createQuery(hql); Integer count = doCount(query); return count; } public Integer count(String hql, String key, Object value) { Query query = createQuery(hql, key, value); Integer count = doCount(query); return count; } public Integer count(String hql, Pair... pair) { Map params = createMap(pair); return count(hql, params); } public Integer count(String hql, Map params) { Query query = createQuery(hql, params); Integer count = doCount(query); return count; } protected Integer doCount(Query query) { Integer count = 0; Object uniqueResult = query.uniqueResult(); if (uniqueResult != null) { count = Integer.parseInt(uniqueResult.toString()); } return count; } // /////////////////////////////////////////////// // ///////获取一个列表(不使用泛型 List )///////////////// // /////////////////////////////////////////////// // 执行不带参数的hql查询,返回一个结果集List public List list(String hql, boolean needPage) { return list(hql, needPage); } public List list(String hql, String key, Object value, boolean needPage) { Map params = createMap(key, value); return list(hql, params, needPage); } public List list(String hql, Map params, boolean needPage) { if (needPage) { PageUtils.fillDefaultPageParams(params); } List list = list(hql, params, needPage); return list; } // 执行带参数并且含有分页的hql查询 private List doList(String hql, Map params) { Query query = createQuery(hql, params); fillPageParams(query, params); List list = doQuery(query); return list; } /** * 向查询对象Query中设置分页参数 * * @param query * 查询对象 * @param params * 查询参数 */ private void fillPageParams(Query query, Map params) { Integer firstResult = (Integer) params.get(PageConstants.FIRST_RES