DAO查詢列表

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

針對當前的程序,爲了使各個業務層都能用此DAO查詢,所以,查詢條件是可變的

我在Action中封裝查詢條件爲Map<String,Object>類型的,String爲屬性,Object爲對應的值

查詢時開始用的是Query,後來還是覺得Criteria更加方便直觀

  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;  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章