首页 / JAVA / 使用java进行List分页查询
使用java进行List分页查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用java进行List分页查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3582字,纯文字阅读大概需要6分钟。
内容图文
学习大佬博客:https://blog.csdn.net/as875784622/article/details/81031470,这篇博客非常好,强推
前提
后台的首页公告,一个首页公告可以发布好几个城市,按理来说,存一个首页公告时有一个字段要存下所有的发布城市,那么这个首页公告就在数据库里只有一条记录就行了,但是实际上存的是一个城市一条记录,那么就是比如说我一个首页公告发布了2个城市,那么现在存库的时候库里就有两条记录,除了发布城市的cityCode码不同外,其他首页公告的属性信息比如说名称,跳转链接和是否生效以及公告图片都相同,但是实际在分页查询的时候是一个首页公告名称只显示一条记录,那些多个的发布城市已经被一个字段给代替了
数据库里的存储
原型
思路
先根据条件从数据库里查出所有的满足条件的记录,再进行java级别的分页显示
代码
/**
* 后台分页查询
*
* @param noticeQuery 首页公告查询
* @return 结果集
*/
@PostMapping("/listByNotices")
public CommonRes<PageModel<List<NoticeQueryPageVo>>> listByNotices(
@RequestHeader("X-Token") String token,
@RequestBody NoticeQuery noticeQuery) throws Exception {
logger.info("[首页公告] 首页公告入参为{}", noticeQuery.toString());
// 分页参数初始化
initDefaultPageParameter(noticeQuery);
PageModel<List<NoticeQueryPageVo>> noticeQueryPageVoPageModel = new PageModel<>();
try {
//满足条件的所有数据
List<NoticeDTO> list = noticeService.listByNotice(noticeQuery);
logger.info("首页公告数据库查询结果出参为{}", JsonUtil.toJson(list));
List<NoticeQueryPageVo> noticeQueryPageVos = new ArrayList<>();
if (list.size() <= 0) {
noticeQueryPageVoPageModel.setCount(0);
noticeQueryPageVoPageModel.setBody(noticeQueryPageVos);
noticeQueryPageVoPageModel.setPageSize(noticeQuery.getPageSize());
noticeQueryPageVoPageModel.setCurrentPage(noticeQuery.getCurrentPage());
return CommonRes.success(noticeQueryPageVoPageModel);
}
List<String> collect = list.stream().filter((listDo) -> {
return StringUtils.hasText(listDo.getTitle());
}).distinct().map(listDo -> {
return listDo.getTitle().trim();
}).distinct().collect(Collectors.toList());
logger.info("去重的首页公告名称出参为{}", JsonUtil.toJson(collect));
for (String s : collect) {
List<Integer> cityCode = new ArrayList<>();
NoticeQueryPageVo noticeQueryPageVo = new NoticeQueryPageVo();
for (NoticeDTO dto : list) {
if (s.trim().equals(dto.getTitle().trim())) {
cityCode.add(dto.getCityCode());
BeanUtils.copyProperties(dto, noticeQueryPageVo);
}
}
cityCode = cityCode.stream().distinct().collect(Collectors.toList());
noticeQueryPageVo.setCityCode(cityCode);
noticeQueryPageVos.add(noticeQueryPageVo);
}
logger.info("满足首页公告查询的最终数据为{}", JsonUtil.toJson(noticeQueryPageVos));
int count = noticeQueryPageVos.size();
int totalPage = count % noticeQuery.getPageSize(); // 一共多少页
if (totalPage > 0) {
totalPage = count / noticeQuery.getPageSize() + 1;
} else {
totalPage = count / noticeQuery.getPageSize();
}
Integer currentPage = totalPage > noticeQuery.getCurrentPage() ? noticeQuery.getCurrentPage() : totalPage;
int fromIndex = (currentPage - 1) * noticeQuery.getPageSize();
int toIndex = currentPage * noticeQuery.getPageSize() > count ? count : currentPage * noticeQuery.getPageSize();
noticeQueryPageVos = noticeQueryPageVos.subList(fromIndex, toIndex);
noticeQueryPageVoPageModel.setCount(count);
noticeQueryPageVoPageModel.setBody(noticeQueryPageVos);
noticeQueryPageVoPageModel.setPageSize(noticeQuery.getPageSize());
noticeQueryPageVoPageModel.setCurrentPage(noticeQuery.getCurrentPage());
logger.info("首页公告分页查询出参为,result:{}", JsonUtil.toJson(noticeQueryPageVoPageModel));
} catch (Exception e) {
logger.error("[首页公告] 分页查询 error:{}", e.getMessage());
}
return CommonRes.success(noticeQueryPageVoPageModel);
}
内容总结
以上是互联网集市为您收集整理的使用java进行List分页查询全部内容,希望文章能够帮你解决使用java进行List分页查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。