• 获取子父节点,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.前台写好后,直接测试

  • 相关阅读:
    VBScript 语法函数(ScriptControl 控件)
    VB 读和写配置文件
    【转】VB控件和对象:ScriptControl 控件
    VB ADODB中的RecordSet.Open打开记录的两个参数adOpenKeyset、adLockBatchOptimistic的详细说明
    JavaScript的replace方法与正则表达式结合应用讲解
    jQuery DatePicker
    PHP date与gmdate的区别及如何修改PHP的默认时区
    jQuery获取Select选择的Text和 Value(转)
    JavaScript字符串函数大全
    CONFLICTING TYPES的原因
  • 原文地址:https://www.cnblogs.com/wgyi140724-/p/10634135.html
Copyright © 2020-2023  润新知