使用Java操作Neo4j数据库的实现步骤
作者:南瓜呱呱
本文主要介绍了Java项目连接到neo4j数据库,通过javaAPI实现了对neo4数据库的一系列操作并通过学习创建节点,节点之间的关系并进行查询操作和对节点的增删操作,感兴趣的可以了解一下
一、在windows平台上部署Neo4j数据库
首先要下载按照neo4j的软件包,因为neo4j的版本只有3.5版本和jdk1.8兼容,而neo4j 4.0版本需要jdk11版本才能成功运行
安装好后到下载好的目录下
bin下面:执行
neo4j.bat console
此时已成功启动,在浏览器搜索框输入:http://localhost:7474/
即可成功进入,第一次进入用户名和密码均为neo4j,首次登录后再输入自己新设的密码
二、通过Neo4j的Java API编程,实现一系列操作
首先第一步当然还是 -- 创建Maven项目
项目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>neo4j-3.5-demo</artifactId> <version>1.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <neo4j.java.driver.version>1.7.5</neo4j.java.driver.version> </properties> <dependencies> <!-- Neo4j 3.5.x 官方驱动 --> <dependency> <groupId>org.neo4j.driver</groupId> <artifactId>neo4j-java-driver</artifactId> <version>${neo4j.java.driver.version}</version> </dependency> <!-- 日志依赖(Neo4j驱动需要) --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.30</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>
接下来就是具体实现步骤:
(1)创建三个人物节点——人物名自取。
//创建人物节点 session.run("create(WR:Person{name:'WuRui'})"); session.run("create(NC:Person{name:'xx'})"); session.run("create(YU:Person{name:'cc'})");
(2)创建两个地区节点----地名自取。
//创建地区节点 session.run("create(HN:Location{name:'HuaiNan'})"); session.run("create(AQ:Location{name:'AnQing'})");
(3)创建节点之间的关系:人与人之间的关系,人与地区之间的关系。
(此处也可以在创建节点的时候就创建好关系)
//创建关系 session.run("match(WR:Person{name:'WuRui'}),(NC:Person{name:'xx'})"+ "create(WR)-[:friend]->(NC)"); session.run("match(WR:Person{name:'WuRui'}),(YU:Person{name:'cc'})"+ "create(WR)-[:friend]->(YU)"); //创建人与地区关系 session.run("match(WR:Person{name:'WuRui'}),(AQ:Location{name:'AnQing'})" + "create(WR)-[:brith]->(AQ)"); session.run("match(NC:Person{name:'xx'}),(HN:Location{name:'HuaiNan'})" + "create(NC)-[:brith]->(HN)");
刷新浏览器,效果如图:
(4)查询所有在淮南(地名可以随便写)出生的人物。
//查询所有在淮南出生的人物 public void qhuai() { Q("match(p:Person)-[:brith]->(l:Location{name:'HuaiNan'}) " + "return p.name AS name"); }
(5)查询所有有关系的节点。
//查询所有有关系的节点 public void qnodes() { Q("match (n)--() return distinct n"); }
(6)查询所有对外有关系的节点以及关系类型。
public void qr() { Q("match (n)-[r]->() return n.name as node,type(r) as type"); }
(7)增加一个人物节点的年龄属性,接着删除该属性。
//增加并删除年龄属性 public void jiaage() { session.run("match(p:Person {name:'WuRui'}) " + "set p.age = 21"); } public void jianage() { // 删除年龄 session.run("match(p:Person {name:'WuRui'}) " + "remove p.age"); }
(8)删除图中的节点(方法不限)。
//删除所有节点和关系 public void deleteAll() { Q("match (n) optional match (n)-[r]-() delete n,r"); }
运行总代码:
package com.wurui.neo4j; import org.neo4j.driver.v1.*; public class Test_neo4j { private static Session session; private static Driver driver; static { driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "wr158158")); session = driver.session(); } // 通用查询方法 public void Q(String c) { StatementResult result = session.run(c); System.out.println("\n执行结果:" + c); while (result.hasNext()) { System.out.println(result.next()); } } public void see() { // 查看数据库neo4j StatementResult result = session.run("match (n) return n"); while (result.hasNext()) { Record record = result.next(); System.out.println(record); } } public void create() { //创建人物节点 session.run("create(WR:Person{name:'WuRui'})"); session.run("create(NC:Person{name:'xx'})"); session.run("create(YU:Person{name:'cc'})"); //创建地区节点 session.run("create(HN:Location{name:'HuaiNan'})"); session.run("create(AQ:Location{name:'AnQing'})"); //创建关系 session.run("match(WR:Person{name:'WuRui'}),(NC:Person{name:'xx'})"+ "create(WR)-[:friend]->(NC)"); session.run("match(WR:Person{name:'WuRui'}),(YU:Person{name:'cc'})"+ "create(WR)-[:friend]->(YU)"); //创建人与地区关系 session.run("match(WR:Person{name:'WuRui'}),(AQ:Location{name:'AnQing'})" + "create(WR)-[:brith]->(AQ)"); session.run("match(NC:Person{name:'xx'}),(HN:Location{name:'HuaiNan'})" + "create(NC)-[:brith]->(HN)"); } //查询所有在淮南出生的人物 public void qhuai() { Q("match(p:Person)-[:brith]->(l:Location{name:'HuaiNan'}) " + "return p.name AS name"); } //查询所有有关系的节点 public void qnodes() { Q("match (n)--() return distinct n"); } //查询所有有对外关系的节点及关系类型 public void qr() { Q("match (n)-[r]->() return n.name as node,type(r) as type"); } //增加并删除年龄属性 public void jiaage() { session.run("match(p:Person {name:'WuRui'}) " + "set p.age = 21"); } public void jianage() { // 删除年龄 session.run("match(p:Person {name:'WuRui'}) " + "remove p.age"); } //删除所有节点和关系 public void deleteAll() { Q("match (n) optional match (n)-[r]-() delete n,r"); } public static void main(String[] args){ Test_neo4j test = new Test_neo4j(); test.create(); test.qhuai(); test.qnodes(); test.jiaage(); test.jianage(); test.deleteAll(); test.qr(); test.see(); driver.close(); }}
小结
通过本次实验,我学会通过利用Java项目连接到neo4j数据库,通过javaAPI实现了对neo4数据库的一系列操作。通过学习创建节点,节点之间的关系并进行查询操作和对节点的增删操作,加深了我对neo4j数据库操作命令的理解,也提高了Java编程能力和neo4j数据库的应用技能。
到此这篇关于使用Java操作Neo4j数据库的实现步骤的文章就介绍到这了,更多相关Java操作Neo4内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!