• 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

  • 相关阅读:
    【BUUCTF】WEB SECRET FILE
    你是如何让函数返回IEnumerable<T>的
    对Closure的再思考
    旋转的女郎
    Tools in Visual Studio 2010
    解析命令行的正则表达式
    Closure中关于递归的一点补充
    对C++和C#中多态及类型转换的理解(二)
    对C#和C++0x中Lamda表达式的简略对比
    对C++和C#中多态及类型转换的理解(一)
  • 原文地址:https://www.cnblogs.com/seekknowledge/p/11983999.html
Copyright © 2020-2023  润新知