查询条件有多个,但对应数据库就1个字段,此时,查询条件需要取交集。

Collection<String> districtCodes = queryPageDTO.getDistrictCodes();
Set<String> levelCityCodes = handleCityLevel(queryPageDTO);
Set<String> levelRegionCityCodes = handleCityLevelRegion(queryPageDTO);

// 3个List取交集(但不包含空)
List<Collection<String>> tempList = new ArrayList<>();
if(!CollectionUtils.isEmpty(districtCodes)){
tempList.add(districtCodes);
}
if(!CollectionUtils.isEmpty(levelCityCodes)){
tempList.add(levelCityCodes);
}
if(!CollectionUtils.isEmpty(levelRegionCityCodes)){
tempList.add(levelRegionCityCodes);
}

Collection<String> cityCodes = new HashSet<>();
if(!CollectionUtils.isEmpty(tempList)){
cityCodes = tempList.get(0);
for(int i = 1;i < tempList.size();i++){
cityCodes.retainAll(tempList.get(i));
}

// 取交集为空的情况下,默认一个值,查询不到
if(CollectionUtils.isEmpty(cityCodes)){
cityCodes.add("-1");
}
}

queryPageDTO.setDistrictCodes(cityCodes);
posted on 2024-07-24 14:26  毛会懂  阅读(22)  评论(0编辑  收藏  举报