分页查询——山穷水复疑无路,柳暗花明又一村

前言
我们一般利用Mybatis-plus的getPage方法可以轻易获取到分页查询的数据以及**< 分页page对象**

但是现在,我们要做的是对数据库的两个表进行查询并将结果保存在map集合中,再将所有数据保存在泛型为map的list中

办法

我们可以定义一个泛型为Map的page对象 Page<Map<String, Object>>
将上述查询好的数据list通过setRecords方法封装到Page对象中,
至于分页的总数据 total, 与用MP分页查询到的一样,因此同样通过Set赋值即可 最后也别忘了 setCurrent 和setSize

 @GetMapping("/{currentPage}/{pageSize}")
    public  R getByPage(@PathVariable int currentPage, @PathVariable int pageSize){
        // 分页查询所有数据 获取page页
        Page<DiscussPost> page = PostService.getPage(currentPage, pageSize);
        long total = page.getTotal();
        // 获取page页中的记录
        List<DiscussPost> posts = page.getRecords();
        List<Map<String,Object>> list = new ArrayList<>();
        /* 遍历每一个帖子 根据其中的userid查询出实际用户user
          将帖子内容和user 装入map集合中
          再将map集合装入 list中*/
        for (DiscussPost post : posts) {
            Map<String,Object> map = new HashMap<>();
            map.put("post",post);
            User user = userService.getById(post.getUserId());
            map.put("user",user);
            list.add(map);
        }
        // 定义泛型为<Map<String,object>> 的page页
        Page<Map<String, Object>> mapPage = new Page<>();
        mapPage.setRecords(list); // 将list集合中的数据当作记录设置给分页
        mapPage.setTotal(total);// 原分页的【总记录数】 和 【自定义分页】 一样 区别只是 【定义内容】
        mapPage.setCurrent(currentPage);
        mapPage.setSize(pageSize);
        return  new R(true,mapPage);

    }

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值