MybatisPlus聯合分頁查詢


跟單表分頁查詢差不多

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM