一、Neo4 j概览
二、springboot 整合 neo4j
2.1、配置文件
Pom文件中引入依赖
Spring生态中Spring-data部分不仅仅提供了Spring-data-jpa , 也提供了Spring-data-neo4j 支持spring和 neo4j的完美融合,pom.xml 文件中依赖如图
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>
yml文件中配置连接属性
spring:
data:
neo4j:
uri: bolt://localhost:7687
username: neo4j
password: 123456
#打印neo4j生成的Cypher
logging:
level:
org:
neo4j:
ogm:
drivers:
bolt:
request:
BoltRequest: DEBUG
2.2、实体类(NodeEntity)
/**
*部门节点实体类
*/
@NodeEntity(label = "Dept")
@Data
@Builder
public class Dept {
@Id
@GeneratedValue
private Long id;
@Property(name = "deptName")
private String deptName;
}
/**
*关系 实体类
*/
@RelationshipEntity(type = "relationShip")
@Data
@Builder
public class RelationShip {
@Id
@GeneratedValue
private Long id;
@StartNode
private Dept parent;
@EndNode
private Dept child;
}
- @NodeEntity: 标明是一个节点实体
- @RelationshipEntity:标明是一个关系实体
- @Id:实体主键
- @Property:实体属性
- @GeneratedValue:实体属性值自增
- @StartNode:开始节点(可以理解为父节点)
- @EndNode:结束节点(可以理解为子节点)
2.3、 创建repositories类(类似于封装过的dao)
@Repository
public interface DeptRepository extends Neo4jRepository<Dept,Long> {
@Query("MATCH (d:dept) WHERE d.deptName CONTAINS $title RETURN d")
List<Dept> findByTitle(@Param("title") String title);
}
@Query:编写neo4j 的Cypher语句, 变量格式为$
源码解析:Neo4jRepository.class
@NoRepositoryBean
public interface Neo4jRepository<T, ID extends Serializable> extends PagingAndSortingRepository<T, ID> {
<S extends T> S save