天天看點

DAO查詢清單

前陣子寫個DAO層的查詢清單,出了點小問題,記錄一下

針對目前的程式,為了使各個業務層都能用此DAO查詢,是以,查詢條件是可變的

  1. public PageResult<T> pageList(Map<String, Object> maps, Class<T> entity,  
  2.         int nowPage, int pageSize) throws Exception {  
  3.     // TODO Auto-generated method stub  
  4.     //總記錄數  
  5.     int totalNum = this.getHibernateTemplate().find("from "+entity.getSimpleName()).size();  
  6.     //總頁數  
  7.     int totalPage = totalNum%pageSize==0?totalNum/pageSize:totalNum/pageSize+1;  
  8.     //目前頁清單  
  9.     List<T> list = null;  
  10.     Session session = this.getSession();  
  11.     Criteria c = session.createCriteria(entity);  
  12.     /**  
  13.      * 如果Map為null,那麼為查詢所有,如果不為空,那麼通過for循環,将Map拼接查詢條件  
  14.      * 開始用的Query,後來還是覺得Criteria更加友善直覺  
  15.      */ 
  16.     if(maps!=null && maps.keySet().size()>0){  
  17.         for(String propertyName:maps.keySet()){  
  18.             Object value = maps.get(propertyName);  
  19.             c.add(Restrictions.eq(propertyName, value));  
  20.         }  
  21.     }  
  22.     //設定目前頁的第一條記錄  
  23.     c.setFirstResult((nowPage-1)*pageSize);  
  24.     //每頁顯示幾條記錄  
  25.     c.setMaxResults(pageSize);  
  26.     list = c.list();  
  27.     session.close();  
  28.     //封裝pagebean  
  29.     PageResult<T> pagebean = new PageResult<T>();  
  30.     pagebean.setList(list);  
  31.     pagebean.setNowPage(nowPage);  
  32.     pagebean.setPageSize(pageSize);  
  33.     pagebean.setTotalNum(totalNum);  
  34.     pagebean.setTotalPage(totalPage);  
  35.     return pagebean;  

繼續閱讀