方法一:
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;
}
}