1. 程式人生 > >neo4j圖形資料庫第六彈——整合springboot(支援新增節點關係)

neo4j圖形資料庫第六彈——整合springboot(支援新增節點關係)

正經學徒,佛系記錄,不搞事情

基於上文: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