Java Spring Boot 实现三张表数据树形结构
首先,你需要定义一个树节点的类,例如:
public class TreeNode {
private String code;
private String name;
private List<TreeNode> children;
// 省略构造方法和getter、setter
}
然后,你可以使用Spring Data JPA来查询三张表的数据,然后在内存中构建树形结构。
@Service
public class TreeService {
@Autowired
private PovResRepository povResRepository;
@Autowired
private CdcResRepository cdcResRepository;
@Autowired
private SysRegionRepository sysRegionRepository;
public TreeNode buildTree() {
// 查询所有省份
List<SysRegion> provinces = sysRegionRepository.findByParentCodeIsNull();
TreeNode root = new TreeNode();
root.setCode('0');
root.setName('根节点');
// 构建省份节点
for (SysRegion province : provinces) {
TreeNode provinceNode = new TreeNode();
provinceNode.setCode(province.getUnitCode());
provinceNode.setName(province.getName());
root.getChildren().add(provinceNode);
// 查询该省份下的所有城市
List<SysRegion> cities = sysRegionRepository.findByParentCode(province.getUnitCode());
// 构建城市节点
for (SysRegion city : cities) {
TreeNode cityNode = new TreeNode();
cityNode.setCode(city.getUnitCode());
cityNode.setName(city.getName());
provinceNode.getChildren().add(cityNode);
// 查询该城市下的所有区县
List<SysRegion> counties = sysRegionRepository.findByParentCode(city.getUnitCode());
// 构建区县节点
for (SysRegion county : counties) {
TreeNode countyNode = new TreeNode();
countyNode.setCode(county.getUnitCode());
countyNode.setName(county.getName());
cityNode.getChildren().add(countyNode);
// 查询该区县的疾控门诊
List<CdcRes> cdcResList = cdcResRepository.findByProvinceAndCityAndCounty(county.getUnitCode());
// 构建疾控门诊节点
for (CdcRes cdcRes : cdcResList) {
TreeNode cdcResNode = new TreeNode();
cdcResNode.setCode(cdcRes.getId());
cdcResNode.setName(cdcRes.getName());
countyNode.getChildren().add(cdcResNode);
}
}
}
}
return root;
}
}
请根据实际情况修改上述代码中的实体类、仓库接口名称以及查询条件等部分。这样,你就可以通过调用buildTree方法来获取封装好的树形数据结构了。
原文地址: https://www.cveoy.top/t/topic/pj8v 著作权归作者所有。请勿转载和采集!