赞
踩
public class Page { private Integer currentPage;//当前页 private int pageSize;//每页显示记录条数 private int totalPage;//总页数 private List<?> dataList;//每页显示的数据 private int star;//开始数据 public Integer getCurrentPage() { return currentPage; } public void setCurrentPage(Integer currentPage) { this.currentPage = currentPage; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalPage() { return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public List<?> getDataList() { return dataList; } public void setDataList(List<?> dataList) { this.dataList = dataList; } public int getStar() { return star; } public void setStar(int star) { this.star = star; } }
List<CountryEntity> list = page.getList(); Page Page = new Page(); //查询出的list数据 //刚开始的页面为第一页 if (Page.getCurrentPage() == null) { Page.setCurrentPage(1); } else { Page.setCurrentPage(Page.getCurrentPage()); } //设置每页数据为十条 Page.setPageSize(count); //每页的开始数 Page.setStar((Page.getCurrentPage() - 1) * count); //list的大小 int totalCount = list.size(); //设置总页数 Page.setTotalPage(totalCount % 10 == 0 ? totalCount / 10 : totalCount / 10 + 1); //对list进行截取 Page.setDataList(list.subList(Page.getStar(),totalCount-Page.getStar()>Page.getPageSize()?Page.getStar()+Page.getPageSize():totalCount)); page.setList((List<CountryEntity>) Page.getDataList()); return ServerResponse.createBySuccess(page);
后续筛选待上传…
周末搞了两天,夜以继日,越发感觉程序的魅力以及自己的无力。 最终才去Java 8 的Stream流进行分页和筛选,简直是步步为营,慢的我都不能接受了、先贴上代码
Query query = new Query(); PageModel<ApiInfoDto> pageModel = new PageModel(); query.addCriteria(Criteria.where("id").in(apiIds)); query.addCriteria(Criteria.where("i_delete_flag").is(0)); List<ApiEntity> list = mongoTemplate.find(query, ApiEntity.class); Query query1 = new Query(); query1.addCriteria(Criteria.where("appId").is(appId)); query1.addCriteria(Criteria.where("i_delete_flag").is(0)); List<ApiEntity> list1 = mongoTemplate.find(query1, ApiEntity.class); list.addAll(list1); Page page = new Page(); if (page.getCurrentPage() == null) { page.setCurrentPage(1); } else { page.setCurrentPage((start / count) + 1); } //设置每页数据为十条 page.setPageSize(count); //每页的开始数 page.setStar((page.getCurrentPage() - 1) * count); //list的大小 int totalCount = list.size(); //设置总页数 page.setTotalPage(totalCount % 10 == 0 ? totalCount / 10 : totalCount / 10 + 1); pageModel.setTotalCount(totalCount); /*List collect = list.stream().skip(start).limit(count).collect(Collectors.toList()); pageModel.setList(collect);*/ long time = 0; if (apifilter != null) { if (apifilter.getCreateTime() != null && EmptyUtil.isNotEmpty(apifilter.getCreateTime().getStartTime())) { //获取filter选择时间,转化为毫秒值 String startTime = apifilter.getCreateTime().getStartTime(); Calendar startdate = Calendar.getInstance(); try { startdate.setTime(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse(startTime)); time = startdate.getTimeInMillis(); } catch (ParseException e) { e.printStackTrace(); } } long finalTime6 = time; List<ApiEntity> collect = Optional.ofNullable(list) .orElse(Lists.newArrayList()) .stream() .filter(entity -> { if (StringUtils.isNotEmpty(apifilter.getName())) { return entity.getName().contains(apifilter.getName()); } else { return true; } }) .filter(entity -> { if (StringUtils.isNotEmpty(apifilter.getDataUrl())) { return entity.getDataUrl().contains(apifilter.getDataUrl()); } else { return true; } }) .filter(entity -> { if (StringUtils.isNotEmpty(apifilter.getCreatorName())) { return entity.getCreatorName().contains(apifilter.getCreatorName()); } else { return true; } }) .filter(entity -> { if (apifilter.getType() != null) { return entity.getType().toString().contains(apifilter.getType().toString()); } else { return true; } }) .filter(entity -> { if (apifilter.getCreateTime() != null && StringUtils.isNotEmpty(apifilter.getCreateTime().getStartTime())) { return entity.getCreateTime().getTime() >= finalTime6; } else { return true; } }).skip(start).limit(count).collect(Collectors.toList()); pageModel.setList(EntityUtil.entityListToDtoList(collect, ApiInfoDto.class)); } else { List collect = list.stream().skip(start).limit(count).collect(Collectors.toList()); pageModel.setList(collect); } List<ApiInfoDto> listToDtoList = EntityUtil.entityListToDtoList(pageModel.getList(), ApiInfoDto.class); pageModel.setList(listToDtoList); return pageModel;
修改经验:多次途中遇到空指针判断浪费时间,以及filter过滤时开始对知识面的考虑不恰当,if else 写了几十个,浪费时间,最终求助朋友才知String中的Optional良好用法;对象判断一定要考虑全面
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。