• Spring Boot配置neo4j(简单版)


    图数据库的开发已经变得越来越流行,与springBoot结合也是很正常,在很早前就已经发布了相关Lib,但是当前网上的Spring Boot整合neo4j都极其复杂,也导致了本人在开发过程中耗费很长时间,顾写下这个文章帮助大众理顺neo4j整合。只需要简单六步,顺序按照编写先后顺序。

    首先看整体Demo项目架构:

    (一)首先导包pom.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    </properties>

    <dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    </dependency>

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

    <build>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    </plugins>
    </build>


    </project>
    (二)编写配置文件application.properties
    server.port=8080
    spring.data.neo4j.uri=http://{neo4jweb端访问地址}:7474
    spring.data.neo4j.username=neo4j账号
    spring.data.neo4j.password=neo4j密码
    (三)model文件---节点User和关系UserRelation,这两个文件与neo4j里面的节点和关系的属性一一对应,此处是我的示例,具体与各自的neo4j内容对于,label必须与neo4j库里名字一致

    @NodeEntity(label = "User")
    public class UserNode {
    @GraphId
    private Long nodeId;

    @Property(name = "userId")
    private String userId;

    @Property(name = "name")
    private String name;

    @Property(name = "age")
    private int age;


    public Long getNodeId() {
    return nodeId;
    }

    public void setNodeId(Long nodeId) {
    this.nodeId = nodeId;
    }

    public String getUserId() {
    return userId;
    }

    public void setUserId(String userId) {
    this.userId = userId;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public int getAge() {
    return age;
    }

    public void setAge(int age) {
    this.age = age;
    }
    }
    @RelationshipEntity(type = "UserRelation")
    public class UserRelation {
    @GraphId
    private Long id;

    @StartNode
    private UserNode startNode;

    @EndNode
    private UserNode endNode;

    public Long getId() {
    return id;
    }

    public void setId(Long id) {
    this.id = id;
    }

    public UserNode getStartNode() {
    return startNode;
    }

    public void setStartNode(UserNode startNode) {
    this.startNode = startNode;
    }

    public UserNode getEndNode() {
    return endNode;
    }

    public void setEndNode(UserNode endNode) {
    this.endNode = endNode;
    }
    }
    (四)repository文件----UserRepository和UserRelationRepository,@Query里面编写Cypher查询

    @Component
    public interface UserRepository extends GraphRepository<UserNode> {

    @Query("MATCH (n:User) RETURN n ")
    List<UserNode> getUserNodeList();

    @Query("create (n:User{age:{age},name:{name}}) RETURN n ")
    List<UserNode> addUserNodeList(@Param("name") String name, @Param("age")int age);
    }
    @Component
    public interface UserRelationRepository extends GraphRepository<UserRelation> {

    @Query("match p=(n:User)<-[r:UserRelation]->(n1:User) where n.userId={firstUserId} and n1.userId={secondUserId} return p")
    List<UserRelation> findUserRelationByEachId(@Param("firstUserId") String firstUserId, @Param("secondUserId") String secondUserId);

    @Query("match (fu:User),(su:User) where fu.userId={firstUserId} and su.userId={secondUserId} create p=(fu)-[r:UserRelation]->(su) return p")
    List<UserRelation> addUserRelation(@Param("firstUserId") String firstUserId, @Param("secondUserId") String secondUserId);

    }
    (五)service文件

    @Service
    public class Neo4jService {

    @Autowired
    private UserRepository userRepository;
    @Autowired
    private UserRelationRepository userRelationRepository;

    /**
    * Always use constructor based dependency injection in your beans.
    * Always use assertions for mandatory dependencies.
    */

    public int addUser(UserNode userNode){
    userRepository.addUserNodeList(userNode.getName(),userNode.getAge());
    return 1;
    }
    }
    (六)neo4j文件注入config----Neo4jConfig,注意basePackges的路径。
    @Configuration
    @EnableNeo4jRepositories(basePackages = "com.example.demo.repository")
    public class Neo4jConfig {
    }
    ————————————————

  • 相关阅读:
    spring参数类型异常输出(二), SpringMvc参数类型转换错误输出(二)
    spring参数类型异常输出,SpringMvc参数类型转换错误输出
    Linux下载jdk ,Linux如何下载jdk
    Linux安装Jdk,CentOS安装Jdk
    Linux系统ifconfig命令找不到,centos ifconfig Command not found
    centos could not retrieve mirrorlist
    Spring声明式事务(xml配置事务方式)
    微信上传图文消息invalid media_id hint,thumb_media_id怎么获取
    云虚拟主机开源 DedeCMS 安装指南
    安装dede显示dir的解决办法
  • 原文地址:https://www.cnblogs.com/sea520/p/11867488.html
Copyright © 2020-2023  润新知