SpingBoot 知识图谱

知识图谱:

知识图谱样式:relation-graph - A Relationship Graph Component

图谱前端样式:

        'rootId': 'a',
        'nodes': [
          { 'id': 'a', 'text': 'a'},
          { 'id': 'b', 'text': 'b'},
          { 'id': 'b1', 'text': 'b1'},
          { 'id': 'b1-1', 'text': 'b1-1'},
          { 'id': 'b1-2', 'text': 'b1-2'},
          { 'id': 'b1-3', 'text': 'b1-3'},
          { 'id': 'b1-4', 'text': 'b1-4'},
          { 'id': 'b1-5', 'text': 'b1-5'},
          { 'id': 'b1-6', 'text': 'b1-6'},
          { 'id': 'b2', 'text': 'b2'},
          { 'id': 'b2-1', 'text': 'b2-1'},
          { 'id': 'b2-2', 'text': 'b2-2'},
          { 'id': 'c', 'text': 'c'},
          { 'id': 'c1', 'text': 'c1'},
          { 'id': 'c2', 'text': 'c2'},
          { 'id': 'c3', 'text': 'c3'}],
        'lines': [
          { 'from': 'a', 'to': 'b'},
          { 'from': 'b', 'to': 'b1'},
          { 'from': 'b1', 'to': 'b1-1'},
          { 'from': 'b1', 'to': 'b1-2'},
          { 'from': 'b1', 'to': 'b1-3'},
          { 'from': 'b1', 'to': 'b1-4'},
          { 'from': 'b1', 'to': 'b1-5'},
          { 'from': 'b1', 'to': 'b1-6'},
          { 'from': 'b', 'to': 'b2'},
          { 'from': 'b2', 'to': 'b2-1'},
          { 'from': 'b2', 'to': 'b2-2'},
          { 'from': 'a', 'to': 'c'},
          { 'from': 'c', 'to': 'c1'},
          { 'from': 'c', 'to': 'c2'},
          { 'from': 'c', 'to': 'c3'}]

rootId是中心数据,nodes里面放数据,lines里面放关系指向。

比如:

        'rootId': '1',
        'nodes': [
          { 'id': '1', 'text': '中心'},
          { 'id': '2', 'text': '分节点1'},
          { 'id': '3', 'text': '分节点2'},
          { 'id': '4', 'text': '分节点1-1'},],
        'lines': [
          { 'from': '1', 'to': '2'},
          { 'from': '1', 'to': '3'},
          { 'from': '2', 'to': '4'}]

后端代码处理:

    @Override
    public Map<String, Object> getAtlas(String id) {
        Map<String,Object> resultMap = new HashMap<>();
        List<Map<String,Object>> nodesList = new ArrayList<>();
        List<Map<String,Object>> linesList = new ArrayList<>();
        Map<String,Object> nodesMap = new HashMap<>();
        // 中心点数据
        Zdxm zdxm = impProMapper.selectZdxmByXh(id);
        nodesMap.put("id",zdxm.getXh());
        nodesMap.put("text",zdxm.getXmmc());
        nodesList.add(nodesMap);
        // 节点数据
        List<ImpProjectItem> impProjectItemList = impProMapper.selectProjectInfo(id);
        // 判断是否有节点数据,若有则递归拼接节点
        if (ObjectUtil.isNotEmpty(impProjectItemList)){
            List<ImpProjectItem> parentList = impProjectItemList.stream().filter(e -> ObjectUtil.isEmpty(e.getParentId())).collect(Collectors.toList());
            parentList.forEach(e ->{
                Map<String,Object> nodeMap = new HashMap<>();
                Map<String,Object> linesMap = new HashMap<>();
                // 数据
                nodeMap.put("id",e.getId());
                nodeMap.put("text",e.getTitle());
                nodesList.add(nodeMap);
                // 节点指向关系
                linesMap.put("from",id);
                linesMap.put("to",e.getId());
                linesList.add(linesMap);
                getAtlas(e.getId(),impProjectItemList,nodesList,linesList);
            });
        }
        resultMap.put("rootId",id);
        resultMap.put("nodes",nodesList);
        resultMap.put("lines",linesList);
        return resultMap;
    }

    public void getAtlas(String parentId,List<ImpProjectItem> impProjectItemList,List<Map<String,Object>> nodesList ,List<Map<String,Object>> linesList){
        List<ImpProjectItem> childList = impProjectItemList.stream().filter(impProjectItem -> ObjectUtil.isNotEmpty(impProjectItem.getParentId()) && impProjectItem.getParentId().equals(parentId)).collect(Collectors.toList());
        if (ObjectUtil.isNotEmpty(childList)){
            childList.forEach(e ->{
                Map<String,Object> nodeMap = new HashMap<>();
                Map<String,Object> linesMap = new HashMap<>();
                // 数据
                nodeMap.put("id",e.getId());
                nodeMap.put("text",e.getTitle());
                nodesList.add(nodeMap);
                // 节点指向关系
                linesMap.put("from",parentId);
                linesMap.put("to",e.getId());
                linesList.add(linesMap);
                // 判断是否还有节点
                if (ObjectUtil.isNotEmpty(impProjectItemList.stream().filter(impProjectItem -> ObjectUtil.isNotEmpty(impProjectItem.getParentId()) && impProjectItem.getParentId().equals(e.getId())).collect(Collectors.toList()))){
                    getAtlas(e.getId(),impProjectItemList,nodesList,linesList);
                }
            });
        }
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个开源的Java框架,用于快速构建独立的、可部署的、生产级的Spring应用程序。它采用了约定优于配置的原则,使开发者能够更轻松地创建和配置Spring应用程序。以下是Spring Boot知识图谱: - 核心特性:Spring Boot提供了一系列核心特性,包括自动配置、起步依赖、嵌入式容器等,以简化Spring应用程序的开发和部署。 - 自动配置:Spring Boot根据应用程序的依赖和配置自动进行配置,减少了手动配置的工作量。它通过条件化配置和默认值来实现自动配置。 - 起步依赖:起步依赖是一组预定义的依赖关系,可以方便地将所需的依赖项添加到项目中。它简化了构建和管理依赖关系的过程。 - 嵌入式容器:Spring Boot支持使用嵌入式容器来运行应用程序,如Tomcat、Jetty和Undertow。这样可以将应用程序打包为可执行的JAR文件,并直接运行,无需外部容器。 - Actuator:Spring Boot Actuator提供了对应用程序运行时的监控和管理功能,如健康检查、度量指标、追踪等。它可以帮助开发者更好地了解和管理应用程序的运行状态。 - 数据访问:Spring Boot提供了对多种数据访问技术的集成支持,包括JPA、JdbcTemplate、MyBatis等。它简化了数据访问层的开发和配置。 - 安全性:Spring Boot提供了一系列安全性特性,包括身份验证、授权、加密等。它可以帮助开发者保护应用程序的数据和资源安全。 - 配置管理:Spring Boot支持将应用程序的配置集中管理,可以使用属性文件、YAML文件、环境变量等方式进行配置。 - 日志记录:Spring Boot使用Commons Logging作为默认的日志记录框架,同时也支持使用其他日志框架,如Log4j、Logback等。 总的来说,Spring Boot是一个强大和灵活的框架,可以帮助开发者更快速地构建和部署Spring应用程序。它的知识图谱包括核心特性、自动配置、起步依赖、嵌入式容器、Actuator、数据访问、安全性、配置管理和日志记录等方面。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值