在neo4j中的Cyper查询语言中还有很多的关键字和函数,这些函数如果对mysql熟悉的话,看一遍几乎都会了,所以这里我们不再进行挨个讲解了,直接开启一下篇。
这里的话我们使用java语言来演示一下使用java做neo4j的增删改查开发教程。下面直接介绍流程。
一、创建一个maven项目,并且在pom.xml里面引入neo4j-driver驱动
<dependencies> <!-- https://mvnrepository.com/artifact/org.neo4j.driver/neo4j-java-driver --> <dependency> <groupId>org.neo4j.driver</groupId> <artifactId>neo4j-java-driver</artifactId> <version>5.26.0</version> </dependency> <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> </dependency> </dependencies> <build> <finalName>Neo4jDemo</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>
这里由于是演示项目,所以我们列举的是核心的包。引入junit包主要是下面用来做junit的单元测试演示。
二、编写neo4j的增删改查代码
这里的示例代码咱们使用junit来进行演示,完整的代码及注释如下:
package com.neo4j.test;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.neo4j.driver.AuthTokens;
import org.neo4j.driver.Driver;
import org.neo4j.driver.GraphDatabase;
import org.neo4j.driver.Record;
import org.neo4j.driver.Result;
import org.neo4j.driver.Session;
public class TestNode4j {
private Driver driver;
private Session session;
@Before
public void init() {
driver = GraphDatabase.driver("bolt://192.168.1.249:7687", AuthTokens.basic("neo4j", "0123456789"));
session = driver.session();
}
@After
public void destroy() {
session.close();
driver.close();
}
/**
* 测试新加一个节点
*/
@Test
public void addNode() {
String ql = "create (a:Person{name:'田七',age:32})";
Result result = session.run(ql);
System.out.println(result.toString());
}
@Test
public void addRelationShip() {
String ql = "match (a:Person{name:'田七'}),(b:Person{name:'王五'}) create (a)-[r:兄弟]->(b)";
Result result = session.run(ql);
System.out.println(result.toString());
}
/**
* 测试查询所有节点
*/
@Test
public void searchNodes() {
String ql = "match (n:Person) return n.name,n.age";
List<Record> list = session.run(ql).list();
for (Record record : list) {
System.out.println(record.get("n.name").asString() + ":" + record.get("n.age").asInt());
}
}
/**
* 测试查询节点关系
*/
@Test
public void searchRelationship() {
String ql = "match (a:Person{name:'张三'})-[r]->(b:Person{name:'李四'}) return type(r) as b";
List<Record> rs = session.run(ql).list();
for (Record record : rs) {
System.out.println(record.get("b").asString());
}
}
/**
* 查询所有节点和关系
*/
@Test
public void queryAll() {
String ql = "match (n:Person)-[r]->(m:Person) return n.name,m.name,type(r) as b";
List<Record> list = session.run(ql).list();
for (Record record : list) {
System.out.println(record.get("n.name") + "-" + record.get("b") + "->" + record.get("m.name"));
}
}
/**
* 删除关系
*/
@Test
public void deleteRelationShip() {
String ql = "match (n:Person{name:'田七'})-[r:兄弟]-() delete r";
session.run(ql);
}
/**
* 删除节点
*/
@Test
public void deleteNode() {
String ql = "match (n:Person) where n.name = '田七' delete n";
session.run(ql);
}
/**
* 修改节点属性
*/
@Test
public void updateNode() {
String ql = "match (n:Person) where n.name = '张三' SET n.age=8";
session.run(ql);
}
}大家可以把这个代码放到项目里面直接运行即可看到对应的效果。
备注:
1、此开发教程里面,使用java进行查询获取的时候和使用工具有一些区别。如果使用工具的话,比如我们查询所有节点的时候,工具会自动进行画图,我们看的直观一些。如果是java语言查询的话,那么我们就需要具体到对应的字段,例如:
match (n) return n.name,n.age
如果在java中编写的是:
match (n) return n
那么我们最后只能获取到节点的id。
2、此开发教程里面,获取关系的名称的话记得使用type(r)。如果直接return r的话,那么我们获取到的也只是r的id,并且千万要记住,这里的名称他不是r的属性,所以如果使用r.xxx获取的话也是获取不到的,只能使用type(r)来获取名称。









还没有评论,来说两句吧...