在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)来获取名称。
还没有评论,来说两句吧...