zoukankan      html  css  js  c++  java
  • 获取子父节点,tree树状结构的方式--通过循环的方式

    1.导包

    <dependencies>
      //将domain quary写到了这层
    <dependency>
    <groupId>cn.xxx.aigou</groupId>
    <artifactId>qqq_product_interface</artifactId>
    <version>1.0-SNAPSHOT</version>
    </dependency>

    <!--springboot相关的依赖-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    </dependency>

    <!--mp的依赖-->
    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>2.2.0</version>
    </dependency>

    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.20</version>
    </dependency>
    <!--eureka的客户端-->
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>

    <!--swagger2接口文档依赖-->
    <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
    <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
    </dependency>
    <!--配置中心支持-->
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    </dependencies>

    2.contrlloer实现
    /**
    * 树状结构数据查询:
    * @return
    */
    @RequestMapping(value = "/treeData",method = RequestMethod.GET)
    public List<ProductType> treeData()
    {

    return productTypeService.treeData();
    }
    3.service写逻辑
    @Override
    public List<ProductType> treeData() {
    /*
    使用循环的方式获取不同层次的节点
    */
    return treeDataLoop();
    }
    private List<ProductType> treeDataLoop() {
    //1:首先查询出所有的数据
    List<ProductType> allProductTypes = productTypeMapper.selectList(null);

    //获取所有的数据的key--value的值
    Map<Long,ProductType> map=new HashMap<>();
    for (ProductType pt : allProductTypes) {
    map.put(pt.getId(),pt);
    }

    //最终返回的结果:一级菜单
    List<ProductType> result=new ArrayList<>();

    //2:遍历:封装父节点和子节点
    for (ProductType currentProductType : allProductTypes) {
    //判断是否是一级菜单
    if(currentProductType.getPid()==0){
    // 如果是一级菜单则返回
    result.add(currentProductType);
    }else{
    ProductType parent =map.get(currentProductType.getPid());
    parent.getChildren().add(currentProductType);
    }

    }

    return result;
    }
    3.前台写好后,直接测试

  • 相关阅读:
    chrome/edge 自签名证书造成浏览器无法访问
    linux 下 取进程占用内存(MEM)最高的前10个进程
    总结记录一下我对YZ数据中台指标相关平台的理解感悟与思考
    史上最全之微信群发拼手气红包测试用例
    vue使用filterBy,orderBy实现搜索筛选功能
    前端处理防抖和节流
    箭头函数()=>{}与function的区别
    html不用任何控件上传文件
    Java必备知识--线程池
    Java必备知识--日志框架
  • 原文地址:https://www.cnblogs.com/wgyi140724-/p/10634135.html
Copyright © 2011-2022 走看看