• Neo4j在linux上的安装与Springboot的集成


    Neo4j在linux上的安装与Springboot的集成

    在linux安装:

    前提:安装配置好java环境

    1.下载neo4j

    官方社区版下载地址:https://neo4j.com/download-center/#releases

    或直接使用服务器命令下载:

    curl -O http://dist.neo4j.org/neo4j-community-3.5.35-unix.tar.gz

    解压缩:

    tar -axvf neo4j-community-3.5.35-unix.tar.gz


    2.修改目录中的conf/neo4j.conf文件

    # 修改第22行load csv时l路径,在前面加个#,可从任意路径读取文件
    #dbms.directories.import=import
    
    # 修改54行,去掉改行的#,可以远程通过ip访问neo4j数据库
    dbms.connectors.default_listen_address=0.0.0.0
    
    #以下三项可不修改
    # 修改71行,去掉#,设置http端口为7687
    dbms.connector.bolt.listen_address=:7687
    # 修改75行,去掉#,设置http端口为7474
    dbms.connector.http.listen_address=:7474
    # 修改79行,去掉#,设置https端口为7473
    dbms.connector.https.listen_address=:7473
    
    # 去掉#,允许从远程url来load csv
    dbms.security.allow_csv_import_from_file_urls=true
    
    # 允许使用neo4j-shell
    dbms.shell.enabled=true
    
    #去掉#,设置连接neo4j-shell的端口,一般为localhost或者127.0.0.1其他使用https就行
    dbms.shell.host=127.0.0.1
    
    #去掉#,设置neo4j-shell端口
    dbms.shell.port=1337
    
    # 修改254行,设置neo4j可读可写
    dbms.read_only=false执行
    

    3.进入bin目录开启:

    • 开启:执行./neo4j start
    • 停止:执行./neo4j stop
    • 状态:执行./neo4j status

    4.访问:

    http://ip地址:7474/browser/
    注:如果使用云服务器不要忘记开放7474端口和7687端口

    第一次登录账号密码:

    账号 neo4j
    密码 neo4j

    Springboot操作neo4j图数据库

    1. 导入依赖文件

      
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-data-neo4jartifactId>
                <version>2.5.2version>
            dependency>
    

    2. 配置yml

    关闭Neo4j的认证,在目录conf/neo4j.conf`文件里

    dbms.security.auth_enabled=false

    spring:
      neo4j:
        uri: bolt://localhost:7687 #bolt端口
        authentication:
          username: neo4j #账号
          password: neo4j #密码
    

    3. 创建实体类

    @Node(labels = "person")
    @Data
    public class PersonNode {
        @Id
        @GeneratedValue
        private Long id;
    
        @Property("name")
        private String name;
    
        @Property("sex")
        private String sex;
    }
    

    @Node表示创建结点,结点为person


    4. 创建关系类(可选)

    @Data
    @NoArgsConstructor
    @RelationshipEntity(type = "关系名称")
    public class PersonRelation implements Srializable {
        @Id
        @GeneratedValue
        private Long id;
        @StartNode
        private Person parent;
        @EndNode
        private Person child;
        @Property
        private String relation;
    
        public PersonRelation(Person parent, Person child, String relation) {
            this.parent = parent;
            this.child = child;
            this.relation = relation;
        }
    }
    

    5. 创建Repository

    @Repository
    public interface PersonRepository extends Neo4jRepository {
      /**
         * 获得全部人员节点
         * @return
         */
        @Query("MATCH (n:person) RETURN n ")
        List getAllPersonNode();
    
        /**
         * 分页查询
         * @param current
         * @param size
         * @param name
         * @return
         */
        @Query("MATCH (n:person) where n.name =~ ('.*'+{2}+'.*') RETURN n ORDER BY n.id DESC SKIP {0}  LIMIT {1}")
        List getPersonNodeByName(Integer current, Integer size, String name);
    
        /**
         * 模糊查询人名
         * @param name
         * @return
         */
        @Query("MATCH (n:person) where n.name =~ ('.*'+{0}+'.*') RETURN n ")
        List getPersonNodeName(String name);
    
       /**
         * 通过id查询
         * @param id
         * @return
         */
        @Query("MATCH (n:person) where id(n)={0} RETURN n")
        PersonNode getPersonNodeById(Long id);
    
       /** 
        *通过id查询某节点的所有子节点 
        * @param pId 
        * @return 
        */
        @Query("Match (p:person) -[*]->(s:person) where id(p)={0} return s")
        List findChildList(Long pId);
    
       /** 
        *通过name查询某个节点的所有子节点 
        * @param pId 
        * @return 
        */
        @Query("Match (p:person {name:{0}}) -[*]->(s:person) return s")
        List findChildList(String name);
    
       /**
        * 查询当前节点的父节点 
        * @param name 
        * @return
        */
        @Query("Match (p:person) -[*]->(s:person {name:{0}}) return p")
        List findParentList(String name);
    
    
    }
    

    6. 在启动类上加上:

    @EnableNeo4jRepositories(basePackages ="com.code.dao")
    @EntityScan(basePackages = "com.code.pojo")
    
  • 相关阅读:
    Linux常用命令学习
    动态爱心-详细教程(小白也会)(HTML)
    短视频电商系统开发
    Python常用功能的标准代码
    粤嵌实训医疗项目day02(Vue + SpringBoot)
    Elasticsearch、Kibana以及Java操作ES 的快速使用
    Flask博客实战 - 实现个人中心及权限管理
    Git原理详解+指令操作,带你快速掌握Git
    shell_56.Linux永久重定向
    Android-第十三节03xUtils-数据库框架(增删改查)详解
  • 原文地址:https://www.cnblogs.com/prosperous-ending-0925/p/16643302.html