import java.util.HashMap; import java.util.List; import java.util.Map; import com.alensic.nursing.utils.StringUtil; /** * 分页 * * @author zhchen * */ public class PagingService{ /** * 首页 * * @param pageMap * @return */ public Map doFirstPage(Map pageMap){ Map resultMap = new HashMap(); PageBean page = new PageBean(); //初始化分页参数 if(!initPageBean(pageMap, resultMap, page)) return resultMap; //当前页 page.setPageNum(1); //返回结果赋值 setResultMap(resultMap, pageMap, page); return resultMap; } /** * 下一页 * * @param pageMap * @return */ public Map doNextPage(Map pageMap){ Map resultMap = new HashMap(); PageBean page = new PageBean(); //初始化分页参数 if(!initPageBean(pageMap, resultMap, page)) return resultMap; int maxPage = page.getMaxPage(); //当前页 int start = Integer.parseInt(pageMap.get("cur_page_num") == null?"0":pageMap.get("cur_page_num").toString()); if(start+1 > maxPage){ }else{ start = start+1; } //当前页 page.setPageNum(start); //返回结果赋值 setResultMap(resultMap, pageMap, page); return resultMap; } /** * 上一页 * * @param pageMap * @return */ public Map doPrePage(Map pageMap){ Map resultMap = new HashMap(); PageBean page = new PageBean(); //初始化分页参数 if(!initPageBean(pageMap, resultMap, page)) return resultMap; //当前页 int start = Integer.parseInt(pageMap.get("cur_page_num") == null?"0":pageMap.get("cur_page_num").toString()); if(start-1 < 1){ }else{ start = start-1; } //当前页 page.setPageNum(start); //返回结果赋值 setResultMap(resultMap, pageMap, page); return resultMap; } /** * 最后一页 * * @param pageMap * @return */ public Map doLastPage(Map pageMap){ Map resultMap = new HashMap(); PageBean page = new PageBean(); //初始化分页参数 if(!initPageBean(pageMap, resultMap, page)) return resultMap; int maxPage = page.getMaxPage(); //当前页 page.setPageNum(maxPage); //返回结果赋值 setResultMap(resultMap, pageMap, page); return resultMap; } /** * 根据页面查询页面信息 * * @param pageMap * @return */ public Map doGoToPage(Map pageMap){ Map resultMap = new HashMap(); PageBean page = new PageBean(); //初始化分页参数 if(!initPageBean(pageMap, resultMap, page)) return resultMap; int maxPage = page.getMaxPage(); //最后页码 String pageNum = pageMap.get("page_num") == null?"0":pageMap.get("page_num").toString(); //验证传入的参数是否为数字 boolean isNum = pageNum.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$"); if(!isNum){ resultMap.put("errorMsg", "页面输入的值不是数字"); return resultMap; } int start = Integer.parseInt(pageNum); if(start < 1){ start = 1; }else if(start > maxPage){ start = maxPage; } //当前页 page.setPageNum(start); //返回结果赋值 setResultMap(resultMap, pageMap, page); return resultMap; } /** * 初始化分页参数 * * @param pageMap 页面传入的参数 * @param resultMap 返回结果 * @param page 分页bean * @return boolean true:成功,false:失败 */ private boolean initPageBean(Map pageMap,Map resultMap,PageBean page){ //查询总记录数 String pageMax = pageMap.get("page_max") == null ?"":pageMap.get("page_max").toString(); String queryCondition = pageMap.get("query_condition") == null ?"":pageMap.get("query_condition").toString(); if(StringUtil.isEmpty(pageMax)){ resultMap.put("errorMsg", "没有设置变量--每页显示多少条"); return false; } int maxResult = getMaxPage(queryCondition); page.setMaxResult(maxResult); page.setPageMax(Integer.parseInt(pageMax)); page.setMaxPage(); return true; } /** * 返回结果赋值 * * @param resultMap 返回集合 * @param pageMap 页面传入的条件 * @param page page对象 * */ private void setResultMap(Map resultMap,Map pageMap,PageBean page){ //查询当前页的信息 String condition = pageMap.get("query_condition") == null ?"":pageMap.get("query_condition").toString(); int pageMax = page.getPageMax(); int pageNum = page.getPageNum(); List list = findPageInfo((pageNum-1)*pageMax, pageMax,condition); Map pageResultMap = new HashMap(); pageResultMap.put("pageNum", page.getPageNum()); pageResultMap.put("maxResult", page.getMaxResult()); pageResultMap.put("pageMax", page.getPageMax()); pageResultMap.put("maxPage", page.getMaxPage()); resultMap.put("page", pageResultMap); resultMap.put("query_result", list); } /** * 查询当前页的信息 * * @param offset 起始行号 * @param size 返回记录数 * @param condition 查询条件 * @return list */ public List findPageInfo(int offset,int size,String condition){ return null; } /** * 获取总记录数 * * @param queryCondition 查询条件 * @return int */ public int getMaxPage(String queryCondition) { int maxPage = 0; return maxPage; } }
/** * 分页组建 * * @author zhchen */ public class PageBean { private int pageNum = 1; // 当前页 private int maxResult; // 总记录数 private int pageMax; // 每页显示数 private int maxPage; // 总页数 public int getPageMax() { return pageMax; } public void setPageMax(int pageMax) { this.pageMax = pageMax; } public int getPageNum() { return pageNum; } public void setPageNum(int pageNum) { this.pageNum = pageNum; } public int getMaxPage() { return maxPage; } public void setMaxPage() { this.maxPage = (maxResult % pageMax == 0 ? maxResult / pageMax : maxResult / pageMax + 1); } public int getMaxResult() { return maxResult; } public void setMaxResult(int maxResult) { this.maxResult = maxResult; } }