/**
* @Title: 類名:BaseDaoSupport
* @Description: 檔案描述
* @author wh
* @date 2012-2-23 18:48:18
* @version V1.0
*/
public class BaseDaoSupport extends HibernateDaoSupport {
public PageModel setPageQuery(final StringBuilder hql, final Integer begin, final Integer end, final String orderField, final String srot, final boolean isPage) {
StringBuilder countHql = new StringBuilder("select count(id) ").append(hql.toString());
if (!CommUtils.isNull(orderField)) {
//排序欄位
hql.append(" order by ").append(orderField);
if (!CommUtils.isNull(srot)) {
hql.append(" ").append(srot);
}
}
HibernateTemplate template = this.getHibernateTemplate();
//開啟查詢快取
// template.setCacheQueries(SystemConstants.isUseCacheQuery);
List list = template.executeFind(new HibernateCallback() {
@Override
public List doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql.toString());
if (!CommUtils.isNull(begin)) {
query.setFirstResult(begin);
}
if (!CommUtils.isNull(end)) {
query.setMaxResults(end);
}
return query.list();
}
});
PageModel page = new PageModel();
if (!CommUtils.isNull(list)) {
if (isPage) {
Long totalCount = (Long) template.find(countHql.toString()).iterator().next();
page.setTotalCount(totalCount);
} else {
page.setTotalCount(list.size());
}
page.setResult(list);
}
return page;
}
/**
* Criteria模式分頁
* @param begin:起始頁
* @param end:最大也
* @param orderField:排序欄位
* @param srot:排序方式
* @param isPage:是否分頁資料
* @return
*/
public PageModel setCriteriaPageQuery(final Criteria criteria, final Integer beginPage, final Integer maxPage, final String orderField, final String sort, final boolean isPage) {
if (!CommUtils.isNull(orderField) && !CommUtils.isNull(sort)) {
criteria.addOrder(Order.asc(sort));
}
HibernateTemplate template = this.getHibernateTemplate();
//開啟查詢快取
// template.setCacheQueries(SystemConstants.isUseCacheQuery);
List list = template.executeFind(new HibernateCallback() {
@Override
public List doInHibernate(Session session)
throws HibernateException, SQLException {
if (!CommUtils.isNull(beginPage)) {
criteria.setFirstResult(beginPage);
}
if (!CommUtils.isNull(maxPage)) {
criteria.setMaxResults(maxPage);
}
return criteria.list();
}
});
PageModel page = new PageModel();
if (!CommUtils.isNull(list)) {
if (isPage) {
//清空彙總對象
criteria.setProjection(null);
//擷取總行數
long totalCount = (Integer) criteria.setProjection(Projections.rowCount()).uniqueResult();
page.setTotalCount(totalCount);
} else {
page.setTotalCount(list.size());
}
page.setResult(list);
}
return page;
}
}