数据库表设计
CREATE TABLE `Region` (
`RegionCode` int(11) NOT NULL AUTO_INCREMENT COMMENT '区域代码',
`ParentRegionCode` int(11) DEFAULT NULL COMMENT '父区域代码',
`RegionLevel` int(11) DEFAULT NULL COMMENT '区域级别',
`RegionName` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '区域名称',
`DeleteFlag` int(11) DEFAULT NULL COMMENT '删除标识,默认为1,0为删除',
)
实体设计
public class RegionDTO {
private Integer regionCode;
private Integer parentRegionCode;
private Integer regionLevel;
private String regionName;
private List<RegionDTO> childList;
}
代码实现
List<RegionDTO> cityList = regionRepository.getRegionDTO(StaffConstant.REGION_LEVEL_CITY);
List<RegionDTO> provinceList = regionRepository.getRegionDTO(StaffConstant.REGION_LEVEL_PROVINCE);
List<RegionDTO> trees = new ArrayList<>();
if (null != provinceList && provinceList.size() > 0) {
Map<Integer, List<RegionDTO>> cityMap = new HashMap<>();
if (null != cityList && cityList.size() > 0) {
cityMap = cityList.stream().collect(Collectors.groupingBy(RegionDTO::getParentRegionCode));
}
for (RegionDTO province : provinceList) {
List<RegionDTO> citys = cityMap.get(province.getRegionCode());
province.setChildList(citys);
trees.add(province);
}
}
return trees;