对于数据库 多表(左)连接 出现大量重复数据
1. 解决办法 在ServiceImpl 中 去重
// start sart java8 新特性 需要的话 可以解除注释
List<Map<String, Object>> unique = dataModelList.stream().distinct().collect(Collectors.toList());
System.out.println(unique.toString());
// end
完整代码如下
@Override
public ServiceResult taskPlanConditionList(Map<String, Object> paramMap) {
ServiceResult serviceResult = new ServiceResult(false);
if(null==paramMap || paramMap.size()==0){
serviceResult.setMessage("查询数据为空");
return serviceResult;
}
Integer pageNum = Integer.parseInt(paramMap.get("pageNum").toString()) ;
Integer pageSize = Integer.parseInt(paramMap.get("pageSize").toString());
if (!StringUtils.isEmpty(pageNum) && !StringUtils.isEmpty(pageSize)) {
pageNum = pageSize * (pageNum - 1);
}
paramMap.put("pageNum",pageNum);
Integer total = mapper.queryTaskPlanConditionCount(paramMap);
List<Map<String, Object>> dataModelList = mapper.queryTaskPlanConditionList(paramMap);
Map<String, Object> result = new HashMap<>();
// start sart java8 新特性 需要的话 可以解除注释
List<Map<String, Object>> unique = dataModelList.stream().distinct().collect(Collectors.toList());
System.out.println(unique.toString());
// end
if(dataModelList.size()>0 && null!= dataModelList){
result.put("list", dataModelList);
result.put("total", total);
serviceResult.setSuccess(true);
serviceResult.success(result,"查找成功",0);
}else {
serviceResult.success(result,"查找失败",-1);
}
return serviceResult;
}
2.
// Object 是你对象的类 前提是 Object需要重写 equals 和 hashMap
List<Object> ObjectList = new ArrayList<>();
// 去重
Objects.stream().forEach(
p -> {
if (!ObjectList.contains(p)) {
ObjectList.add(p);
}
}
);
List 的contains()方法底层实现使用对象的equals方法去比较的,其实重写equals()就好,但重写了equals最好将hashCode也重写了。
3. 根据对象ID去重
本文链接:https://blog.csdn.net/jiaobuchong/article/details/54412094