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

  • 相关阅读:
    MFC Bitmap::FromBITMAPINFO返回空问题
    String成员函数
    用xshell连接l自己的inux
    回调函数
    文件操作相关函数(POSIX 标准 open,read,write,lseek,close)
    Linux_GDB调试学习笔记
    程序中的一些限制(基于Linux系统C语言)
    第10课:[实战] Redis 网络通信模块源码分析(3)
    第09课:【实战】Redis网络通信模块源码分析(2)
    简单模拟多段线绘制Pline命令过程的撤销功能
  • 原文地址:https://www.cnblogs.com/seekknowledge/p/11983999.html
Copyright © 2011-2022 走看看