使用Java操作Neo4j数据库
一、在windows平台上部署Neo4j数据库
首先要下载按照neo4j的软件包,因为neo4j的版本只有3.5版本和jdk1.8兼容,而neo4j 4.0版本需要jdk11版本才能成功运行
neo4j 3.5版本下载链接
安装好后到下载好的目录下
bin下面:执行
neo4j.bat console
此时已成功启动,在浏览器搜索框输入:http://localhost:7474/
即可成功进入,第一次进入用户名和密码均为neo4j,首次登录后再输入自己新设的密码
二、通过Neo4j的Java API编程,实现一系列操作
(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数据库的应用技能。