Java 树形 结构 省市区

1. javabean

 

 

 子集是必不可少的

2. sql   简单点说就是查询出全部的非删除状态数据 ,我这里面的choose when  和查询级别为1 的是因为业务需要

    select
            id,
            ssqmc,
            jb,
            sj
        from t_sys_ssqjcb
        where del_flag = 0
        <choose>
            <when test="id != null and id != ''">
                and sj = #{id}
            </when>
            <when test="name != null and name != ''">
                and ssqmc like concat('%',#{name},'%')
            </when>
            <otherwise>
                and jb = 1
            </otherwise>
        </choose>
        order by yzbm

3. Java 实现类

  @GetMapping("PCAAndSubsidy")
    @Override
    public RestResponse<List<SsqVo>> getIPCAAndSubsidyList(String name) {
//        查询一级省的信息
        List<SsqVo> all = pcaAndSubsidyDao.getIPCAAndSubsidyList(null,name);
        List<SsqVo> resultList=new ArrayList<>();  //结果集
        int minLevel = 3;  //最小的级别
        for (SsqVo a: all){
            if (a.getJb() < minLevel){ //如果级别低于最小级别就给最小级别赋值
                minLevel = a.getJb() ;
            }
        }
        for(SsqVo a: all){
            if(minLevel == a.getJb()){
                resultList.add(a);//级别是最低的话就放入结果集
            }
        }
        for (SsqVo a: resultList){
            getChildren(a,all);//递归查询子集
        }

        return new RestResponse<>(resultList);
    }


  
private void getChildren(SsqVo a,List<SsqVo> all){
for (SsqVo ai: all){
if (null !=ai.getSj()&& ai.getSj().equals(a.getId())){ //如果当前数据上级不为null 且上级id 等于a的id
if (null == a.getChildren()) {
List<SsqVo> c = new ArrayList<>();//新建一个list 可能这个子数据下面还有儿子数据
a.setChildren(c);
}
a.getChildren().add(ai);
getChildren(ai,all);//不满足,递归
}
}
}
 

 

posted @ 2022-04-21 10:48  Li_ll  Views(455)  Comments(0Edit  收藏  举报