当前位置:   article > 正文

Neo4j(CQL)学习记录-02(Cypher Query Language)

cypher query language

我在本地测试,下载了neo4j-desktop图数据库可视化工具,下载地址:https://neo4j.com/download/icon-default.png?t=N7T8https://neo4j.com/download/

 使用springboot集成neo4j,导入spring-boot-starter-data-neo4j依赖或者spring-data-neo4j

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-neo4j</artifactId>
  4. <version>3.2.2</version>
  5. </dependency>
  6. <!--要使用neo4j的注解还需要导入这个依赖-->
  7. <dependency>
  8. <groupId>org.neo4j</groupId>
  9. <artifactId>neo4j-ogm-core</artifactId>
  10. <version>3.2.16</version>
  11. </dependency>

这俩的neo4j版本都是5.15.0,所以jdk需要17,上一篇文章中提到过,jdk8版本需要4以下的版本,但是neo4j-desktop没有4以下的版本,配置文件

  1. spring:
  2. neo4j:
  3. uri: bolt://localhost:7687
  4. authentication:
  5. username: neo4j
  6. password: 12345678
  7. encryption:
  8. enabled: false

结合上一篇中提到的,这一章将记录在springboot中使用CQL的节点,属性,关系等

@NodeEntity 将 Java 类声明为一个节点实体,表示该类的对象将映射到图数据库中的节点。

  1. import org.neo4j.ogm.annotation.NodeEntity;
  2. @NodeEntity
  3. public class Person {
  4. // 类的属性
  5. }

@RelationshipProperties用于定义关系。@Property定义属性

  1. @NodeEntity("Person")
  2. @Data
  3. public class Person {//节点类
  4. @Id
  5. private Long id;
  6. @Property
  7. private String name;
  8. @Relationship(type = "FRIEND")//@relationship不能修饰实体类
  9. private List<FriendOf> friends = new ArrayList<>();
  10. // 省略构造函数、getter和setter
  11. }
  12. @RelationshipProperties
  13. public class FriendOf {//关系实体
  14. @Id
  15. private Long id;
  16. @Property
  17. private String type; // 关系类型
  18. @Property
  19. private String since; // 友谊建立时间
  20. @StartNode
  21. private Person person1;
  22. @EndNode
  23. private Person person2;
  24. // 可选:定义关系的属性
  25. }
  26. @RelationshipProperties
  27. public class FriendOf {//关系实体
  28. @Id
  29. private Long id;
  30. @Property
  31. private String type; // 关系类型
  32. @Property
  33. private String since; // 友谊建立时间
  34. }
  35. @RelationshipProperties
  36. public class FriendOf {
  37. private String type; // 关系类型
  38. private String since; // 友谊建立时间
  39. @Relationship(type = "FRIEND",direction = Relationship.INCOMING)
  40. private Person person1;
  41. @Relationship(type = "FRIEND",direction = Relationship.OUTGOING)
  42. private Person person2;
  43. }

关于关系实体类中的@StartNode和@EndNode的使用,以及@RelationShip可以替换@StartNode和@EndNode,什么时候关系实体类中需要添加开始节点和结束节点的说明:

  1. 不加开始节点和结束节点:
    当关系实体类不需要包含开始节点和结束节点时,通常适用于简单的关系,例如仅包含一个属性或几个属性的关系。在这种情况下,关系实体类仅用于表示关系本身的属性,而不需要关联到具体的节点。例如,如果我们只需要表示两个人之间的友谊关系,而不需要具体的开始节点和结束节点信息,则可以像之前提供的示例代码中一样,只定义关系实体类,而不包含开始节点和结束节点。

  2. 包含开始节点和结束节点:
    当关系需要额外的属性或更复杂的结构时,您可能希望在关系实体类中包含开始节点和结束节点的信息。这种情况下,关系实体类不仅包含关系本身的属性,还包含关联到开始节点和结束节点的信息。这样做可以方便地通过关系实体类来获取相关节点的属性,并且在执行查询时可以更灵活地使用Cypher语句。通常,这种方式适用于需要更多关于关系的信息,或者需要在查询中同时访问节点和关系属性的情况。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/641500
推荐阅读
相关标签
  

闽ICP备14008679号