java分頁查詢 方法一 Query

方法一:

1 Action文件:stationByPage = this.sManager.getAndSearch(mainForm, searchVal, user);

2 manager文件:

public List getAndSearch(SForm form,String searchVal,User user){
  int totalPage = 1;
  int pageNum = form.getPage();
  String orgId = form.getOrgId();
  
  int count = sDAO.getNumOfStationsBySearch(orgId, searchVal, user);
  form.setRecordNum(count);
   
  String orderColum = form.getOrderColum();
  if(orderColum != null && orderColum != ""){
   sDAO.setOrderColum(orderColum);
   sDAO.setAsc(form.getAsc());
  }
  
  totalPage = (count != 0 && count%form.getPageRowNum() == 0) ?
    (count/form.getPageRowNum()) : (count/form.getPageRowNum() + 1);
  form.setTotal(totalPage);
  
  if (form.getPage() < 1) { // 默認首頁
   form.setPage(1);
  }
  
  if (form.getPage() > totalPage) { // 超過最大頁,默認尾頁
   form.setPage(totalPage);
  }
 
  
  List result = this.sDAO.findByPageAndSearch(pageNum, orgId, searchVal, user);
  if (result.isEmpty() && pageNum >1){
   form.setPage(--pageNum);
   return sDAO.findByPageAndSearch(pageNum, orgId, searchVal, user);
  }
  return result;
 }

3 Dao文件:

 public List findByPageAndSearch(int pageNum,String orgId,String searchVal,User user) {

  try {
   String hql = "from S where station_name like '%" + searchVal + "%'" ;
  hql += " order by stationName";
   Query query = getSession().createQuery(hql);
   query.setFirstResult((pageNum-1) *PAGESIZE);
   query.setMaxResults(PAGESIZE);
   return query.list();
   
   } catch (RuntimeException re) {
   log.error("find by example failed", re);
   throw re;
  }
 }

 

發佈了9 篇原創文章 · 獲贊 1 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章