springboot+neo4j整合
neo4j我这里和分词结合使用
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-ogm-http-driver</artifactId>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-jdbc-driver</artifactId>
<version>4.0.0</version>
</dependency>
yml
spring:
data:
neo4j:
uri: http://XXXXXX:7474
username: XXXX
password: XXXXX
entity
import lombok.Data;
import org.neo4j.ogm.annotation.GeneratedValue;
import org.neo4j.ogm.annotation.Id;
import org.neo4j.ogm.annotation.NodeEntity;
@NodeEntity
@Data
public class NodeGraph {
@Id
@GeneratedValue
private Long id;
/**
* 节点名称
*/
private String nodename;
/**
* 节点类型 无节点类型用0表示
*/
private Integer type ;
/**
* 编号唯一的
*/
private String nodecode;
private Boolean isExact =false ;
/**
* 系统id
*/
private String systemid;
}
查询(只做简单搭建)
复杂语句网上很多
import com.geovis.edu.knowledge.neo4j.entity.NodeGraph;
import org.springframework.data.neo4j.annotation.Query;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public interface NodeRepository extends Neo4jRepository<NodeGraph, Long> {
//返回List没有泛型
@Query(value = "match (n) where n.name contains {name} and n.systemid={systemid} return n ")
List findAllByLike(@Param("name") String name, @Param("systemid") String systemid);
}
/**
* 创建关系
* @param
* @return
*/
@Query("match (fu:Knowledge),(su:Knowledge) where fu.name={firstName} and su.name={secondName} and fu.systemid ={systemid} and su.systemid ={systemid} create p=(fu)-[r:relation]->(su) return p")
List createRelation(@Param("firstName") String firstName, @Param("secondName") String secondName, @Param("systemid") String systemid);
删除
@Query("match(n:Knowledge ) where n.systemid ={systemid} detach delete n")
void deleteAll(@Param("systemid") String systemid);