neo4j图形数据库第六弹——整合springboot(支持添加节点关系)

版权声明:博主原创,未经允许不得转载。 https://blog.csdn.net/qq_31748587/article/details/84394793

正经学徒,佛系记录,不搞事情

基于上文:https://blog.csdn.net/qq_31748587/article/details/84392092 的项目

这里举例四种常用的添加方法:

  1. 创建单个节点
  2. 创建多个节点
  3. 根据已有节点创建关系
  4. 同时创建节点和关系

工具类 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

猜你喜欢

转载自blog.csdn.net/qq_31748587/article/details/84394793
今日推荐