zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Git 从入门到入坑
    单件模式(单例模式)
    装饰者模式
    观察者模式
    设计模式入门
    SpringBoot + Mybatis + Redis 整合入门项目
    Spring Boot 前后端交互及参数传递
    Spring Securtiy 认证流程(源码分析)
    Spring Boot 静态页面跳转
    第一条手机验证码
  • 原文地址:https://www.cnblogs.com/seekknowledge/p/11983999.html
Copyright © 2011-2022 走看看