前言
我们一般利用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);
}