首先,你需要定义一个树节点的类,例如:

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方法来获取封装好的树形数据结构了。

Java Spring Boot 实现三张表数据树形结构

原文地址: https://www.cveoy.top/t/topic/pj8v 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录