原型:
@RestController public class ReputationRestCtrl { @Autowired private ReputationMapper rptnMapper; @RequestMapping(value="/pagedQueryRptn", method=RequestMethod.GET) public Map<String,Object> pagedQueryRptn(int pageNo){ Map<String,Object> retvalMap=new LinkedHashMap<String,Object>(); retvalMap.put("pageNo", pageNo); final int PAGE_SIZE=5; int totalCount=rptnMapper.countAlive(); retvalMap.put("totalCount", totalCount); int pageCount=(int)Math.ceil((double)totalCount/PAGE_SIZE); retvalMap.put("pageCount", pageCount); int start=pageNo*PAGE_SIZE; int end=(pageNo+1)*PAGE_SIZE; List<Reputation> datasInPage=rptnMapper.pagedQueryAlive(start, end); retvalMap.put("rptns", datasInPage); return retvalMap; } }
问题:
需要分页的地方很多,上面代码如不改会有四到五处大同小异的代码。
修改方案:
做一个PageUtil类,将共性内容放入,将个性部分留在原地。
结果:
PageUtil类:
package com.hy.myapp.rest; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; public class PageUtil { private static final String DATAS2 = "datas"; private static final String PAGE_COUNT = "pageCount"; private static final String TOTAL_COUNT = "totalCount"; private static final String PAGE_NO = "pageNo"; public static Map<String,Object> packPagedMap(int pageNo, int pageSize, int totalCount, List<?> datas){ Map<String,Object> retvalMap=new LinkedHashMap<String,Object>(); retvalMap.put(PAGE_NO, pageNo); retvalMap.put(TOTAL_COUNT, totalCount); int pageCount=(int)Math.ceil((double)totalCount/pageSize); retvalMap.put(PAGE_COUNT, pageCount); retvalMap.put(DATAS2, datas); return retvalMap; } public static int figureStart(int pageNo,int pageSize) { return pageNo*pageSize; } public static int figureEnd(int pageNo,int pageSize) { return (pageNo+1)*pageSize; } }
原类:
@RestController public class ReputationRestCtrl{ @Autowired private ReputationMapper rptnMapper; @RequestMapping(value="/pagedQueryRptn", method=RequestMethod.GET) public Map<String,Object> pagedQueryRptn(int pageNo){ final int PAGE_SIZE=5; return PageUtil.packPagedMap(pageNo, PAGE_SIZE, rptnMapper.countAlive(), rptnMapper.pagedQueryAlive(PageUtil.figureStart(pageNo,PAGE_SIZE), PageUtil.figureEnd(pageNo,PAGE_SIZE))); } }
END