当前位置: 首页 > news >正文

使用Java操作Neo4j数据库

一、在windows平台上部署Neo4j数据库

首先要下载按照neo4j的软件包,因为neo4j的版本只有3.5版本和jdk1.8兼容,而neo4j 4.0版本需要jdk11版本才能成功运行

neo4j 3.5版本下载链接

安装好后到下载好的目录下

bin下面:执行

neo4j.bat console

此时已成功启动,在浏览器搜索框输入:http://localhost:7474/

即可成功进入,第一次进入用户名和密码均为neo4j,首次登录后再输入自己新设的密码

二、通过Neo4j的Java API编程,实现一系列操作

(1)创建三个人物节点——人物名自取。

        //创建人物节点
        session.run("create(WR:Person{name:'WuRui'})");
        session.run("create(NC:Person{name:'xx'})");
        session.run("create(YU:Person{name:'cc'})");

(2)创建两个地区节点----地名自取。

        //创建地区节点
        session.run("create(HN:Location{name:'HuaiNan'})");
        session.run("create(AQ:Location{name:'AnQing'})");

(3)创建节点之间的关系:人与人之间的关系,人与地区之间的关系。

     (此处也可以在创建节点的时候就创建好关系)

        //创建关系
        session.run("match(WR:Person{name:'WuRui'}),(NC:Person{name:'xx'})"+
                "create(WR)-[:friend]->(NC)");
        session.run("match(WR:Person{name:'WuRui'}),(YU:Person{name:'cc'})"+
                "create(WR)-[:friend]->(YU)");
        //创建人与地区关系
        session.run("match(WR:Person{name:'WuRui'}),(AQ:Location{name:'AnQing'})"
        + "create(WR)-[:brith]->(AQ)");
        session.run("match(NC:Person{name:'xx'}),(HN:Location{name:'HuaiNan'})"
        + "create(NC)-[:brith]->(HN)");

刷新浏览器,效果如图:

(4)查询所有在淮南(地名可以随便写)出生的人物。

    //查询所有在淮南出生的人物
public void qhuai() {
    Q("match(p:Person)-[:brith]->(l:Location{name:'HuaiNan'}) " +
            "return p.name AS name");
}

(5)查询所有有关系的节点。

    //查询所有有关系的节点
public void qnodes() {
    Q("match (n)--() return distinct n");
}

(6)查询所有对外有关系的节点以及关系类型。

public void qr() {
    Q("match (n)-[r]->() return n.name as node,type(r) as type");
}

(7)增加一个人物节点的年龄属性,接着删除该属性。

    //增加并删除年龄属性
public void jiaage() {
      session.run("match(p:Person {name:'WuRui'}) " +
              "set p.age = 21");
}
public void jianage() {
    // 删除年龄
    session.run("match(p:Person {name:'WuRui'}) " +
            "remove p.age");
}

(8)删除图中的节点(方法不限)。

    //删除所有节点和关系
public void deleteAll() {
        Q("match (n) optional match (n)-[r]-() delete n,r");
    }

运行总代码:

package com.wurui.neo4j;
import org.neo4j.driver.v1.*;

public class Test_neo4j {
    private static Session session;
    private static Driver driver;
    static {
        driver = GraphDatabase.driver("bolt://localhost:7687",
                AuthTokens.basic("neo4j", "wr158158"));
        session = driver.session();
}
// 通用查询方法
public void Q(String c) {
    StatementResult result = session.run(c);
    System.out.println("\n执行结果:" + c);
    while (result.hasNext()) {
        System.out.println(result.next());
    }
}

public void see() { // 查看数据库neo4j
    StatementResult result = session.run("match (n) return n");
    while (result.hasNext()) {
        Record record = result.next();
        System.out.println(record);
    }
}
public void create() {
        //创建人物节点
        session.run("create(WR:Person{name:'WuRui'})");
        session.run("create(NC:Person{name:'xx'})");
        session.run("create(YU:Person{name:'cc'})");
        //创建地区节点
        session.run("create(HN:Location{name:'HuaiNan'})");
        session.run("create(AQ:Location{name:'AnQing'})");
        //创建关系
        session.run("match(WR:Person{name:'WuRui'}),(NC:Person{name:'xx'})"+
                "create(WR)-[:friend]->(NC)");
        session.run("match(WR:Person{name:'WuRui'}),(YU:Person{name:'cc'})"+
                "create(WR)-[:friend]->(YU)");
        //创建人与地区关系
        session.run("match(WR:Person{name:'WuRui'}),(AQ:Location{name:'AnQing'})"
        + "create(WR)-[:brith]->(AQ)");
        session.run("match(NC:Person{name:'xx'}),(HN:Location{name:'HuaiNan'})"
        + "create(NC)-[:brith]->(HN)");
}
    //查询所有在淮南出生的人物
public void qhuai() {
    Q("match(p:Person)-[:brith]->(l:Location{name:'HuaiNan'}) " +
            "return p.name AS name");
}
    //查询所有有关系的节点
public void qnodes() {
    Q("match (n)--() return distinct n");
}
    //查询所有有对外关系的节点及关系类型
public void qr() {
    Q("match (n)-[r]->() return n.name as node,type(r) as type");
}

    //增加并删除年龄属性
public void jiaage() {
      session.run("match(p:Person {name:'WuRui'}) " +
              "set p.age = 21");
}
public void jianage() {
    // 删除年龄
    session.run("match(p:Person {name:'WuRui'}) " +
            "remove p.age");
}
    //删除所有节点和关系
public void deleteAll() {
        Q("match (n) optional match (n)-[r]-() delete n,r");
    }

public static void main(String[] args){
    Test_neo4j test = new Test_neo4j();
    test.create();
    test.qhuai();
    test.qnodes();
    test.jiaage();
    test.jianage();
    test.deleteAll();
    test.qr();
    test.see();
    driver.close();
}}

小结

通过本次实验,我学会通过利用Java项目连接到neo4j数据库,通过javaAPI实现了对neo4数据库的一系列操作。通过学习创建节点,节点之间的关系并进行查询操作和对节点的增删操作,加深了我对neo4j数据库操作命令的理解,也提高了Java编程能力和neo4j数据库的应用技能。

http://www.dtcms.com/a/122559.html

相关文章:

  • Kotlin 学习--数组
  • 【大模型微调】如何解决llamaFactory微调效果与vllm部署效果不一致如何解决
  • 深入了解提示工程:通往AI高效协作的桥梁
  • Redis和数据库一致性问题
  • 微前端架构深度解析
  • 华为海思IC前端中后端(COTXPU)岗位笔试机考题
  • 深入理解 rsync daemon 模式(守护进程)
  • 【简单理解什么是简单工厂、工厂方法与抽象工厂模式】
  • 【“星睿O6”AI PC开发套件评测】在O6开发板使用gemma-2b测试CPU性能
  • 测试用例 [软件测试 基础]
  • 加油站小程序实战教程10开通会员
  • 重构居家养老安全网:从 “被动响应” 到 “主动守护”
  • Windows上使用Qt搭建ARM开发环境
  • 如何在idea中快速搭建一个Spring Boot项目?
  • <项目代码>苹果识别<目标检测>
  • 从零到精通:Kafka学习路径全解析
  • 阅读MySQL实战45讲第9天
  • Windows + vmware + ubuntu+docker + docker-android实现Android模拟器构建和启动
  • Java——字符串(黑马个人听课笔记)
  • flutter开发音乐APP(前提准备)
  • 计算机网络笔记-分组交换网中的时延
  • 【挑战项目】 --- 微服务编程测评系统(在线OJ系统)(一)
  • MongoDB 的详细介绍
  • 网络基础2
  • 【含文档+PPT+源码】基于python爬虫的豆瓣电影、音乐、图书数据分析系统
  • Vue 基础语法介绍
  • 剑指Offer(数据结构与算法面试题精讲)C++版——day9
  • 探秘 Svelte+Vite+TS+Melt - UI 框架搭建,开启高效开发
  • Could not resolve com.google.guava:guava:32.1.1-jre.
  • 【设计模式】面向对象开发学习OOPC