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. 导入依赖文件

  <!-- neo4j -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-neo4j</artifactId>
            <version>2.5.2</version>
        </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<PersonNode,Long> {
  /**
     * 获得全部人员节点
     * @return
     */
    @Query("MATCH (n:person) RETURN n ")
    List<PersonNode> 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<PersonNode> getPersonNodeByName(Integer current, Integer size, String name);

    /**
     * 模糊查询人名
     * @param name
     * @return
     */
    @Query("MATCH (n:person) where n.name =~ ('.*'+{0}+'.*') RETURN n ")
    List<PersonNode> 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<Person> findChildList(Long pId);

   /** 
    *通过name查询某个节点的所有子节点 
    * @param pId 
    * @return 
    */
    @Query("Match (p:person {name:{0}}) -[*]->(s:person) return s")
    List<Person> findChildList(String name);

   /**
    * 查询当前节点的父节点 
    * @param name 
    * @return
    */
    @Query("Match (p:person) -[*]->(s:person {name:{0}}) return p")
    List<Person> findParentList(String name);


}

6. 在启动类上加上:

@EnableNeo4jRepositories(basePackages ="com.code.dao")
@EntityScan(basePackages = "com.code.pojo")
posted @ 2022-08-31 15:33  ProsperousEnding  阅读(170)  评论(0编辑  收藏  举报