/** * 通过Finder获得记录总数 * * @param finder 条件组装器 * @return 记录数 */ public int countQueryResult(Finder finder) { String hql = finder.getRowCountHql(); Query query = getSession().createQuery(hql); finder.setParamsToQuery(query); if (finder.isCacheable()) { query.setCacheable(true); } return ((Number) query.iterate().next()).intValue(); }
/** * 通过Finder获得分页数据 * * @param finder 条件组装器 * @param pageNo 当前页码 * @param pageSize 每页条数 * @return 分页信息,其中包含有数据列表 */ @SuppressWarnings("unchecked") public Pagination queryForPage(Finder finder, Integer pageNo, Integer pageSize) { int totalCount = countQueryResult(finder); Pagination p = new Pagination(pageNo, pageSize, totalCount); if (totalCount < 1) { p.setList(new ArrayList()); return p; } Query query = getSession().createQuery(finder.getOrigHql()); finder.setParamsToQuery(query); query.setFirstResult(p.getFirstResult()); query.setMaxResults(p.getPageSize()); if (finder.isCacheable()) { query.setCacheable(true); } List list = query.list(); p.setList(list); return p; }
/** * 通过Finder获得列表数据 * * @param finder 条件组装器 * @return 对象列表 */ @SuppressWarnings("unchecked") public List find(Finder finder) { Query query = finder.createQuery(getSession()); List list = query.list(); return list; }