按条件进行分页查询:条件查询,分页查询
Dao层:
public List<Article> getBranchProductWithPage(BaseQuery baseQuery) {
DetachedCriteria criteria = DetachedCriteria.forClass(Article.class);
criteria.addOrder(Order.desc("date"));
//设置栏目查询
if(baseQuery.getColumnId()!=null && baseQuery.getColums()!=null && baseQuery.getColums().size()>0){
criteria.add(Restrictions.in("column.id", baseQuery.getColums()));
}
if(baseQuery.getSearchInfo()!=null && baseQuery.getSearchInfo()!=""){
//'%三%'
criteria.add(Restrictions.like("name", "%"+baseQuery.getSearchInfo()+"%"));//模糊查询
}
return this.getHibernateTemplate().findByCriteria(criteria, baseQuery.getStartRow(), baseQuery.getPageSize());
}
获取总的条目数量:
public Integer getCount(BaseQuery baseQuery){
DetachedCriteria criteria = DetachedCriteria.forClass(Article.class);
criteria.setProjection(Projections.rowCount());
//设置栏目查询
if(baseQuery.getColumnId()!=null && baseQuery.getColums()!=null && baseQuery.getColums().size()>0){
criteria.add(Restrictions.in("column.id", baseQuery.getColums()));
}
if(baseQuery.getSearchInfo()!=null && baseQuery.getSearchInfo()!=""){
criteria.add(Restrictions.like("name", baseQuery.getSearchInfo()));
}
@SuppressWarnings("unchecked")
List<Integer> counts = getHibernateTemplate().findByCriteria(criteria);
return counts.get(0);
}
从数据库中查出前num条数据进行展示(hibernate中利用分页的思想):
public List<Article> getArticleByColumnTypeNum(List<Long> columnId,Long typeId,Integer num){
DetachedCriteria criteria = DetachedCriteria.forClass(Article.class);
criteria.addOrder(Order.desc("date"));
//设置栏目查询
if(columnId!=null){
criteria.add(Restrictions.in("column.id", columnId));
}
if(typeId!=null){
criteria.add(Restrictions.eq("type.id", typeId));
}
return this.getHibernateTemplate().findByCriteria(criteria,0,num);
}