SpringBoot 整合 Neo4j

article/2025/9/15 16:39:38

  • 1、创建测试类
  • 2、集成 SpringBoot

阅读此文之前,必须对 Neo4j 有个初步的了解,如果要实际操作的话,需要自备一个 Neo4j 数据库

本文所涉及代码已开源至 Gitee

https://gitee.com/Array_Xiang/spring-boot-neo4j

创建一个 SpringBoot 项目,引入 Neo4j 的依赖

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

配置文件可以参考我这个 application.yml

spring:data:neo4j:uri: bolt://localhost:7687username: neo4jpassword: password

1、创建测试类

1.1、创建节点

创建3个节点,为了防止数据污染,可以在执行前,清空所有数据

// 清空所有数据和对应关系
match (n) detach delete n;

我们要创建三个节点,分别是 XiangNeneXu Neo4j 的语法是

CREATE (n:Person{name:"Xiang",age:18})
CREATE (n:Person{name:"Nene",age:18})
CREATE (n:Person{name:"Xu",age:18})

清楚了语法如何书写,我们开始写测试类

SpringBootNeo4jApplicationTests 测试类

package com.liuyuncen;import org.junit.jupiter.api.Test;
import org.neo4j.driver.*;
import org.springframework.boot.test.context.SpringBootTest;import static org.neo4j.driver.Values.parameters;@SpringBootTest
class SpringBootNeo4jApplicationTests {@Testvoid createNode() {Driver driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "password"));Session session = driver.session();session.run("CREATE (n:Person {name:$name, age:$age})",parameters("name","Xiang","age","18"));session.run("CREATE (n:Person {name:$name, age:$age})",parameters("name","Nene","age","18"));session.run("CREATE (n:Person {name:$name, age:$age})",parameters("name","Xu","age","18"));// 最后查询一下 NeneResult result = session.run( "MATCH (n:Person) WHERE n.name = $name " +"RETURN n.name as name, n.age as age",parameters( "name", "Nene"));while (result.hasNext()) {Record record = result.next();System.out.println(record.get("name") +":"+ record.get("age"));}session.close();}
}

这里输出了查询的 Nene 结果

Neo4j 控制台页面查询 match (n) return n

这样,我们三个节点就创建完了,如果要创建对应关系,把 Neo4j 的 sql 语句替换上面程序就可以了

1.2、创建关联关系

已经存在现有节点属性,新增新的关联

语法:

MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>)
CREATE  (<node1-label-name>)-[<relationship-label-name>:<relationship-name>]->(<node2-label-name>)
RETURN <relationship-label-name>
-- RETURN子句是可选的。 如果我们想立即看到结果,那么使用它。 否则,我们可以省略这个子句。

案例:

match (p:Person{name:"Nene"}),(m:Person{name:"Xiang"})
CREATE (m) -[:classMater] -> (p)
CREATE (p) -[:classMater] -> (m)

所以第二段程序可以这样写

    @Testvoid createRelation(){Driver driver = GraphDatabase.driver("bolt://192.168.111.139:7687", AuthTokens.basic("neo4j", "password"));Session session = driver.session();session.run("match (p:Person{name:$name1}),(m:Person{name:$name2}) " +"CREATE (m) -[:classMater] -> (p) " +"CREATE (p) -[:classMater] -> (m)",parameters("name1","Xiang","name2","Nene"));session.close();}

同样的 ,其他语法,删除、修改等都是类似。这个可以看我上一篇文章内容。

2、集成 SpringBoot

既然我们是 SpringBoot 项目,那自然以对象为存储介质,将数据都封装到对象中。spring-boot-starter-data-neo4j 早就帮我们想好了这一切。

创建 Person 对象

package com.liuyuncen.entity;import lombok.Builder;
import lombok.Data;
import lombok.ToString;
import org.neo4j.ogm.annotation.GeneratedValue;
import org.neo4j.ogm.annotation.Id;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Property;import java.io.Serializable;/*** @belongsProject: SpringBoot-Neo4j* @belongsPackage: com.liuyuncen.entity* @author: Xiang想* @createTime: 2022-09-28  14:29* @description: TODO* @version: 1.0*/
@Data
@Builder
@NodeEntity("person")
@ToString
public class Person implements Serializable {@Id@GeneratedValueprivate Long id;@Property("name")private String name;@Property("age")private Integer age;
}

创建dao层,PersonRepository 并继承 Neo4jRepository

package com.liuyuncen.repository;import com.liuyuncen.entity.Person;
import org.springframework.data.neo4j.annotation.Query;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.stereotype.Repository;import java.util.List;/*** @belongsProject: SpringBoot-Neo4j* @belongsPackage: com.liuyuncen.repository* @author: Xiang想* @createTime: 2022-09-28  15:03* @description: TODO* @version: 1.0*/
@Repository
public interface PersonRepository extends Neo4jRepository<Person, Long> {@Query("MATCH (n:Person) WHERE id(n) = $0 RETURN n")List<Person> findChildList(Long id);
}

最后测试类

@Test
void findPersonById(){Long id = 0L;List<Person> childList = repository.findChildList(id);for (Person person : childList) {System.out.println("person = " + person.toString());}
}

到这里我相信你已经可以拿下 Neo4j 基础的一些操作了。

我是想想,一个不仅会敲代码的程序🐒,手动滑稽😜


http://chatgpt.dhexx.cn/article/4eKJIIci.shtml

相关文章

【Neo4j教程之CQL函数基本使用】

&#x1f680; Neo4j &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;C…

Neo4j资料 Neo4j教程 Neo4j视频教程 Neo4j 图数据库视频教程

课程发布地址 地址&#xff1a; 腾讯课堂《Neo4j 图数据库视频教程》 https://ke.qq.com/course/327374?tuin442d3e14 作者 庞国明&#xff0c;《Neo4j权威指南》副主编、《Neo4j 3.x 入门经典》翻译 邮箱&#xff1a;pangguomingyeah.netQQ:1143815700Neo4j技术讨论QQ群&…

Neo4J超详细专题教程,快来收藏起来吧

Neo4J超详细教程 Lecture&#xff1a;波哥 一、Neo4J相关介绍 1.为什么需要图数据库 随着社交、电商、金融、零售、物联网等行业的快速发展&#xff0c;现实社会织起了了一张庞大而复杂的关系 网&#xff0c;传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随…

Neo4j教程 Neo4j视频教程 Neo4j 图数据库视频教程

课程发布地址 地址&#xff1a; 腾讯课堂《Neo4j 图数据库视频教程》 https://ke.qq.com/course/327374?tuin442d3e14 作者 庞国明&#xff0c;《Neo4j权威指南》副主编、《Neo4j 3.x 入门经典》翻译 邮箱&#xff1a;pangguomingyeah.netQQ:1143815700Neo4j技术讨论QQ群&…

neo4j教程-安装部署

neo4j教程-安装部署 Neo4j的关键概念和特点 •Neo4j是一个开源的NoSQL图形存储数据库&#xff0c;可为应用程序提供支持ACID的后端。Neo4j的开发始于2003年&#xff0c;自2007年转变为开源图形数据库模型。程序员使用的是路由器和关系的灵活网络结构&#xff0c;而不是静态表…

Neo4j安装教程

1.下载社区版本&#xff0c;java8推荐安装3.*的版本 Neo4j Download Center - Neo4j Graph Data Platformhttps://neo4j.com/download-center/#community 点击下载即可。 2.配置 启动 将提取的文件放在服务器上的永久主页中&#xff0c;例如 D:\neo4j\. 顶级目录称为 NEO4J_…

Neo4j详细介绍及使用教程

文章目录 一、Neo4j介绍1.Neo4j简介2.图数据库简介3.Neo4j的优缺点4.Neo4j的常见应用场景二、使用教程1.下载安装2.数据插入和查询(1)基本概念(2)基本语法Ⅰ.CREATE操作——创建Ⅱ.MERGE——创建或更新Ⅲ.Match操作——查找指定的图数据Ⅳ.DELETE操作——删除节点3.JAVA实战 一…

Neo4j语法教程

neo4j简版教程 create (<node-name:<label-name2>:<label-name2>......>) return <node-name> 可以给一个节点创建多label的node eg: CREATE (dept:Dept { deptno:10,dname:"Accounting",location:"Hyderabad" }) Neo4j CQL创…

【数据库】linux安装neo4j教程(neo4j 4.x)

一.配置jdk neo4j 4.x版本依赖jdk11&#xff0c;需要安装jdk11才能正常启动&#xff08;安装高版本或低版本jdk都不行&#xff09; 1&#xff09;执行uname -a看下系统架构 2&#xff09;根据系统架构下载对应安装包 https://www.oracle.com/java/technologies/javase/jdk11…

linux neo4j 教程,Neo4j 入门教程 - 安装

本篇来简单介绍下如何下载并安装 Neo4j&#xff0c;篇目很短&#xff0c;因为真的很简单。 下载 Neo4j 首先在 https://neo4j.com/download/ 下载 Neo4j。你可以选择企业体验版或者免费的社区版&#xff0c;这里我是用的社区版。点击 Download 按钮即可开始下载。 网站会自动下…

使用Docker安装neo4j教程

拉取镜像源 docker pull neo4j(:版本号) //缺省 “:版本号” 时默认安装latest版本的查看本地镜像 docker images启动容器 docker run -d --name container_name -p 7474:7474 -p 7687:7687 -v /home/neo4j/data:/data -v /home/neo4j/logs:/logs -v /home/neo4j/conf:/var…

neo4j教程 java_neo4j 教程

Neo4j是一个世界领先的开源图形数据库。 它是由Neo技术使用Java语言完全开发的。本教程将教你Neo4j的基础知识&#xff0c;Java与Neo4j和Spring DATA与Neo4j。 本教程分为Neo4j简介&#xff0c;Neo4j CQL&#xff0c;Neo4j CQL函数&#xff0c;Neo4j管理员&#xff0c;Neo4j与J…

最详细的Neo4J解读(附安装教程)

文章目录 一、Neo4j简介二、Neo4j - 特点和优势1.Neo4j的特点2.Neo4j的优点3.Neo4j的缺点或限制 三、Neo4j - 数据模型四、Neo4j安装及配置1.安装Java JDK2.下载安装Neo4j3.创建系统环境变量4.Neo4j的启动和停止5.切换数据库 五、Neo4j的CQL操作 一、Neo4j简介 Neo4j是一种流行…

图数据库Neo4j实战(全网最详细教程)

1.图数据库Neo4j介绍 1.1 什么是图数据库&#xff08;graph database&#xff09; 随着社交、电商、金融、零售、物联网等行业的快速发展&#xff0c;现实社会织起了了一张庞大而复杂的关系网&#xff0c;传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数…

neo4j入门

目录 一、安装 二、CQL使用 三、Springboot(2.4以上版本)整合neo4j 四、使用过程中的问题 1、自定义查询&#xff0c;cql无法接收变量 2、使用依赖去操作neo4j只有return才会执行 3、neo4j和mysql事务冲突 补充 一、安装 1、首先要配置jdk&#xff0c;默认电脑中有jdk…

Neo4j 安装、使用教程

文章目录 一、Neo4j 的安装与配置1、安装JDK2、安装Neo4j3、Neo4j环境变量配置4、启动服务器 二、Neo4j 使用教程 一、Neo4j 的安装与配置 1、安装JDK 由于Neo4j是基于Java的图形数据库&#xff0c;运行Neo4j需要启动JVM进程&#xff0c;因此必须安装JAVA SE的JDK。配置 JDK环…

neo4j新手教程

neo4j新手教程 本文通过一个实际的案例来一步一步使用Cypher来操作Neo4j。 这个案例的节点主要包括专业和课程两类&#xff0c;课程和课程之间有前置、并列等关系&#xff0c;专业和课程之间有包含等关系。 1、&#xff08;可选&#xff09;首先&#xff0c;我们删除数据库中…

微信开发者工具元素快速定位审查元素

一般浏览器里鼠标在元素上右键点击审查元素或检查元素即可快速打开开发者工具并定位到该元素&#xff0c;但在微信开发者工具中不支持&#xff0c; 解决方法 点击 elements左边的 小鼠标 图片&#xff0c;然后在主页面点击元素即可快速定位

代码审查规范(试用版)

目录 1、背景 2、目标 3、流程 4、指定代码审查规范 4.1、命名风格 4.2、常量定义 4.3、代码风格 4.4、注释风格 4.5、控制语句 5、执行代码审查规范 6、开展PR Bash活动 1、背景 2019年已成历史&#xff0c;2020年已经悄然到来。2019年&#xff0c;我们的研发团队经…

sonar代码审查

sonar代码审查 sonarqube简介七个方面检测代码质量sonarqube结构组件集成方式 sonar部署部署须知sonar搭建步骤1.查看本地环境2.查看java环境3.安装mysql4.安装及配置sonar5.启动sonar启动启动遇到的问题 sonar代码扫描一、使用sonar-scanner进行本地扫描二、使用Android studi…