当前位置:   article > 正文

neo4j整合springboot_springboot neo4j 动态关系层级传递‘’

springboot neo4j 动态关系层级传递‘’

neo4j整合springboot

1 创建一个springboot项目

2 引入eno4j依赖

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

<!--lombok-->
<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3 springboot版本

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4 添加配置文件

# neo4j配置 
spring.data.neo4j.uri= bolt://localhost:7687 
spring.data.neo4j.username=neo4j 
spring.data.neo4j.password=123456
  • 1
  • 2
  • 3
  • 4

5 创建实体

@NodeEntity:标明是一个节点实体

@RelationshipEntity:标明是一个关系实体

@Id:实体主键

@Property:实体属性

@GeneratedValue:实体属性值自增

@StartNode:开始节点(可以理解为父节点)

@EndNode:结束节点(可以理解为子节点)

@Data
@NodeEntity("Student") //与图数据库进行绑定
public class Person implements Serializable {

    @Id
    @GeneratedValue
    private Long id;

    @Property("name")
    private String name;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

6 创建接口继承Neo4jRepository

Neo4jRepositore里 封装了简单的crud

@Repository
public interface PersonRepository extends Neo4jRepository<Person,Long> {

    //此语句是已存在的节点,创建节点之间的关系
    @Query("match (n:Student {name:{0}}),(m:Student {name:{2}})" +
            "create (n)-[:关系demo{relation:{1}}]->(m)")
    void createRelation(String from, String relation, String to);
    /**
    * 查询某个节点的所有子节点 
    * @param pId * @return 
    */ 
    @Query("Match (p:Student ) -[*]->(s:Student) where id(p)={0} return s")
    List<Person> findChildList(Long pId);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

7 测试

@Autowired
private PersonRepository personRepository;

	@Test
    public void testCreate() {
        /* //查询
        Optional<Person> byId = personRepository.findById(353L);
        byId.orElse(null);
        */

        Person person = new Person();
        person.setName("李四");
        //创建节点 使用Neo4jRepositore里的方法
        personRepository.save(person);
    }

	//原生语句进行创建关系
    @Test
    public void createPersonRelation2() {
        personRepository.createRelation("张三","好友","李四");
    }
	//原生语句 查询某个节点的所有子节点
	@Test
    public void findByid() {
        List<Person> byId = personRelationRepository.findChildList(352L);
        System.out.println(byId);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/727782
推荐阅读
相关标签
  

闽ICP备14008679号