/**
* @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;
}
}
* @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;
}
}