返回树形数据

三种方式:

1.查询所有数据后,自行封装树形数据

步骤如下:

1.查询所有数据,展示server层数据

这里是输入最高父节点,以及县级type

 @Override
    public List<CommonRegion> getTree() {
      //查询所有数据
     List<CommonRegion> allRegion = commonRegionDao.allList();
   

      List<CommonRegion> regionTreeList = buildTree(allRegion,"500181403","1400");

        return regionTreeList;
    }
 /**
     * 构造父子级
     *
     * @param allRegion
     * @param pid
     * @return
      type分类:省:1100 市1300 区1400
     */
     
    public static List<CommonRegion> buildTree(List<CommonRegion> allRegion,String pid,String type) {

        List<CommonRegion> regionTreeList = new ArrayList<>();
        //获取省


            if (type.equals("1100")) {
                List<CommonRegion> regionList = allRegion.stream().filter(region -> region.getRegionType().equals("1100")).collect(Collectors.toList());
                for (CommonRegion region : regionList) {
                    CommonRegion regionTree = new CommonRegion();
                    regionTree.setRegionId(region.getRegionId());
                    regionTree.setRegionName(region.getRegionName());
                    regionTree.setParRegionId(region.getParRegionId());
                    regionTreeList.add(regionTree);
                }
            } else if (type.equals("1300")) {
                //获取省市
                List<CommonRegion> regionList = allRegion.stream().filter(region -> region.getRegionType().equals("1100") || region.getRegionType().equals("1300")).collect(Collectors.toList());
                for (CommonRegion region : regionList) {
                    CommonRegion regionTree = new CommonRegion();
                    if (Objects.equals(pid, region.getParRegionId())) {
                        regionTree.setRegionId(region.getRegionId());
                        regionTree.setRegionName(region.getRegionName());
                        regionTree.setChildren(buildTree(allRegion,region.getRegionId(),type));
                        regionTreeList.add(regionTree);
                    }
                }

            } else {
                //获取省市区
                for (CommonRegion region : allRegion) {
                    CommonRegion regionTree = new CommonRegion();
                    if (Objects.equals(pid, region.getParRegionId())) {
                        regionTree.setRegionId(region.getRegionId());
                        regionTree.setRegionName(region.getRegionName());
                        regionTree.setChildren(buildTree(allRegion,region.getRegionId(),type));
                        regionTreeList.add(regionTree);
                    }
                }
            }

        return regionTreeList;
    }

2.在mybatis之中循环调用sql语句(注意:会循环调用sql语句及数据库,不适用于数据量太大的时候)

<resultMap id="getSjcpInfoList" type="com.zqzt.pm.model.SupManager.Prodtype">
        <id column="prod_type_id" property="prodTypeId" jdbcType="INTEGER"  />
        <result column="prod_type_name" property="prodTypeName" jdbcType="VARCHAR"  />
        <result column="up_prod_type_id" property="upProdTypeId" jdbcType="INTEGER"  />

        <result column="up_prod_type_name" property="upProdTypeName" jdbcType="VARCHAR"  />
        <collection property="children" ofType="com.zqzt.pm.model.SupManager.Prodtype" column="prod_type_id" select="selectListTree2"/>
    </resultMap>

    <select id="selectListTree1" resultMap="getSjcpInfoList">
        select prod_type_id,prod_type_name ,up_prod_type_id,up_prod_type_name
        from dim_prod_type where up_prod_type_id =-1
           and status_cd='1000'
        </select>

    <select id="selectListTree2" resultMap="getSjcpInfoList">
      select prod_type_id,prod_type_name ,up_prod_type_id,up_prod_type_name
        from dim_prod_type where up_prod_type_id =#{id}
           and status_cd='1000'
    </select>

3.

1.在实体类中创建List<>children

2.查询所有数据

3.分装树形

    /**
     * 遍历组织,获取树形结构
     *
     * @param list
     * @return
     */
    private List<Group> toTreeList(List<Group> list) {
        List<Group> nodeList = new ArrayList<>();
        if (list == null || list.isEmpty()) {
            return nodeList;
        }
        for (Group node1 : list) {
            node1.setName(node1.getName());
            if (!parseLevel(list, node1)) {
                nodeList.add(node1);
            }
        }
        return nodeList;
    }

    /**
     * 组织层级转化
     *
     * @param list
     * @param node1
     * @return
     */
    private boolean parseLevel(List<Group> list, Group node1) {
        boolean mark = false;
        for (Group node2 : list) {
            if (node1.getParentId() != null && node1.getParentId().equals(node2.getRowId())) {
                mark = true;
                if (node2.getChildren() == null)
                    node2.setChildren(new ArrayList<>());
                node2.getChildren().add(node1);
                break;
            }
        }
        return mark;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值