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

原文地址:https://www.cnblogs.com/seekknowledge/p/11983999.html