版权声明:博主原创,未经允许不得转载。 https://blog.csdn.net/qq_31748587/article/details/84394793
正经学徒,佛系记录,不搞事情
基于上文:https://blog.csdn.net/qq_31748587/article/details/84392092 的项目
这里举例四种常用的添加方法:
- 创建单个节点
- 创建多个节点
- 根据已有节点创建关系
- 同时创建节点和关系
工具类 Neo4jUtil 中添加方法 add
/**
* 执行添加cql
* @param cql 查询语句
*/
public static void add(String cql) {
//启动事务
try (Session session = driver.session();
Transaction tx = session.beginTransaction()) {
tx.run(cql);
//提交事务
tx.success();
} catch (Exception e) {
e.printStackTrace();
}
}
这与以往的查询工具方法不同,涉及到事务处理,需要通过 .beginTransaction 方法开启事务,通过 tx.success 提交事务
这里用到了 Java 1.7 特性 try-with-resource 语法糖来打开资源,作用是执行完代码自动关闭资源
调用方法:
第一种:创建单个节点
@GetMapping("add")
public void add(){
//创建单个节点
String cql = "create (:Person{name:\"康康\"})";
neo4jUtil.add(cql);
}
注意:create 语法不会判断当前数据库中是否已经存在节点,只会直接创建节点
为了避免重复创建节点可以使用 merge,使用 merge 也要注意如果数据库没有该节点,则添加该节点,有该节点则查询出该节点(属性、类型有一个不同的都不会被识别为同一个节点,merge时需要写出所有的属性)
结果:
第二种:创建多个节点
String cql = "create (:Person{name:\"李雷\"}) create (:Person{name:\"小明\"})";
结果:
第三种:根据已有节点创建关系
String cql = "match (n:Person{name:\"李雷\"}),(m:Person{name:\"小明\"}) create (n)-[r:friendRelation]->(m)";
结果:
第四种:同时创建节点和关系
String cql = "create (:Person{name:\"张三\"})-[r:friendRelation]->(:Person{name:\"王五\"})";
结果:
项目地址:
https://pan.baidu.com/s/1whwP5b28VlyvDcfeThXmtA 提取码: rd3c