跟單表分頁查詢差不多
1.編寫查詢語句
1 public interface QuestionMapper extends BaseMapper<Question> { 2 @Select("SELECT * FROM question,result WHERE question_id=result_id ") 3 List<QuestionResultPagingVo> getQuestionResultPage(Page page); 4 }
2.編寫service
1 @Service 2 public class QuestionServiceImpl implements QuestionService { 3 @Resource 4 private QuestionMapper questionMapper; 5 6 /** 7 * public Page<T> setRecords(List<T> records) { 8 * this.records = records; 9 * return this; 10 * } 11 * records包含查詢數據列表,setRecords返回一個簡單分頁模型 12 * questionMapper.getQuestionResultPage(page)返回一個查詢分頁查詢數據, 13 * 如果Page<QuestionResultPagingVo> pages = new Page<>(1,2); 14 * 那么questionMapper.getQuestionResultPage(pages)就會以一頁2個元素大小,返回第一頁的數據。 15 * 使用page.setRecords主要是為了使用Page.getTotal()獲取共有多少頁這個屬性 16 * 17 * @param page 18 * @return 19 */ 20 @Override 21 public Page<QuestionResultPagingVo> getQuestionResultPage(Page<QuestionResultPagingVo> page) { 22 return page.setRecords(questionMapper.getQuestionResultPage(page)); 23 } 24 }
本質上是使用MybatisPlus提供的分頁插件Page完成的
其實Page<QuestionResultPagingVo> pages = new Page<>(1,2);后再執行questionMapper.getQuestionResultPage(pages);
然后同樣可以使用pages.getTotal()獲取總條數,Page是個很靈活好用的東西,不用用死了,看看源碼分析分析方法
3.controller調用
1 @RequestMapping("/questionResult/page") 2 @ResponseBody 3 public Map<String, Object> resultPage( 4 @RequestParam(defaultValue = "1") Integer page, 5 @RequestParam(defaultValue = "5")Integer limit) { 6 7 Map<String, Object> map = new LinkedHashMap<>(); 8 9 Page<QuestionResultPagingVo> pages = new Page<>(page,limit); 10 11 Page<QuestionResultPagingVo> resultPage = questionService.getQuestionResultPage(pages); 12 if (resultPage.getRecords().size() == 0) { 13 map.put("code", 400); 14 } else { 15 map.put("code", 0); 16 map.put("msg", ""); 17 map.put("count", resultPage.getTotal()); 18 map.put("data", resultPage.getRecords()); 19 } 20 return map; 21 }
附上demo
其實這是個問卷的結果統計,用了layui的分頁,還有echarts的圖表
源碼在github