本文主要是介绍巧用Stream流解决Page分页连表查询一对多展示错误的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 简介
在数据库一对多的情况下,使用Page分页查询这种Vo的时候如果直接查询会导致每页展示的条数不一致。
简单的代码如下
- 用户类
public class User{private Integer id;
}
- 地址类
public class UserAddress {private Integer id;private String address;private Integer userId;
}
- 查询
select tb.*,ua.*
from user tb
left join user_address ua on ua.user_id = tb.id
直接使用分页查询回到这分页的size失败。
2. 解决方案
使用查询条件先查出来所有符合条件的数据,数据量大的情况不建议使用
public Page<UserVo> getUserAddressPage(UserQueryDto dto) {List<UserVo> list = userDao.getUserAddressPage(dto);Page page = dto.getPage();page.setTotal(list.size());list = list.stream().skip((page.getCurrent() - 1) * page.getSize()).limit(page.getSize());page.setRecords(list);return page;
}
这篇关于巧用Stream流解决Page分页连表查询一对多展示错误的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!