使用 Java 操作 Neo4J

首先我们先使用原生的这种方式,导入 jar 包,然后:

public class TestController {  public static void main(String[] args) {    Driver driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "Yinlidong1995."));Session session = driver.session();      session.run("CREATE (n:Part {name: {name},title: {title}})",                parameters( "name", "Arthur001", "title", "King001" ));     StatementResult result = session.run( "MATCH (a:Part) WHERE a.name = {name} " +                       "RETURN a.name AS name, a.title AS title",       parameters( "name", "Arthur001"));      while (result.hasNext()) {          Record record = result.next();           System.out.println( record.get( "title" ).asString() + "" + record.get( "name" ).asString() );      }       session.close();driver.close();  }
}

这是一种比较古老的方式,来实现的,而且还是需要些 CQL 语句来进行实现。但是胜在非常好理解,这个时候,我们需要再来看看图,看看在 Neo4J 中他是怎么展现的。

通过这个,我们至少证明我们成功连上了,并且创建也成功了。

这时候有细心的读者就会问,为啥我之前在 ​ ​GraphDatabase.driver​ ​   的地方,连接的是

​ ​bolt://localhost:7687​ ​.

这是因为,你启动的Neo4J 是7474,也就是说,Neo4J 服务里面可不是这个来连接,

SpringBoot 整合 Neo4j

1.创建SpringBoot项目

常规的创建SpringBoot项目,

创建完成之后,习惯性的要改一下 SpringBoot 的版本号,最好别用最新的,因为阿粉亲身经历,使用最新版的,出现了错误你都不知道怎么出现的,就是这么神奇,你永远都发现不了的bug。

我们把版本号改成2.1.0,这样的话,我们在 pom 文件中加入依赖 jar

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.10</version>
</dependency>

2.增加配置

spring:  data:    neo4j:     url: bolt://localhost:7687    username: neo4j   password: Yinlidong1995.  main:   allow-bean-definition-overriding: true

3.Neo4JConfig

package com.example.neo4j.config;
import org.neo4j.driver.v1.AuthTokens;
import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.v1.GraphDatabase;
import org.neo4j.driver.v1.Session;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration@EnableNeo4jRepositories("com.example.neo4j.repository")
@EnableTransactionManagement
public class Neo4jConfig {    @Value("${spring.data.neo4j.url}")    private String url;    @Value("${spring.data.neo4j.username}")  private String userName;  @Value("${spring.data.neo4j.password}")  private String password;   @Bean(name = "session") public Session neo4jSession() {  Driver driver = GraphDatabase.driver(url, AuthTokens.basic(userName, password));     return driver.session();  }
}

4.编写实体类

package com.example.neo4j.entry;
import org.neo4j.ogm.annotation.*;
import java.util.HashSet;
import java.util.Set;
@NodeEntity("group")
@Datapublic class GroupNode {   @Id    @GeneratedValue   private Long id;  /**     * 班级名称     */   @Property(name = "name")   private String name;    /**     * 编号    */   private String num;   @Relationship(type = "RelationEdge")  private Set<RelationEdge> sets = new HashSet<>(); public void addRelation(StudentNode sonNode, String name) { RelationEdge relationNode = new RelationEdge(this, sonNode, name);       sets.add(relationNode);  sonNode.getSets().add(relationNode);  }
}

学生实体类:

package com.example.neo4j.entry;
import org.neo4j.ogm.annotation.GeneratedValue;
import org.neo4j.ogm.annotation.Id;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Relationship;
import java.util.HashSet;
import java.util.Set;
/**
* 有点类似于Mysql中的table 映射的对象类,mysql中叫做ORM,neo4j中叫做OGM [object graph mapping]
*/
@NodeEntity("student")
@Datapublic class StudentNode {    @Id    @GeneratedValue    private Long id;    /**     * 学生名称    */    private String name; /**     * 性别    */    private String sex;    @Relationship(type = "RelationEdge", direction = "INCOMING")  private Set<RelationEdge> sets = new HashSet<>();
}
package com.example.neo4j.entry;
import lombok.Data;
import org.neo4j.ogm.annotation.*;
@RelationshipEntity(type = "RelationEdge")
@Datapublic class RelationEdge {    @Id    @GeneratedValue   private Long id;    // 关系名    private String name;   @StartNode    private GroupNode groupNode;   @EndNode    private StudentNode studentNode;   public RelationEdge(GroupNode parentNode, StudentNode sonNode, String name) {this.groupNode = parentNode;       this.studentNode = sonNode;    this.name = name;   }
}

5.Repository接口

对应的学生接口:

package com.example.neo4j.repository;
import com.example.neo4j.entry.StudentNode;
import org.springframework.data.neo4j.repository.Neo4jRepository;
public interface StudentRepository extends Neo4jRepository<StudentNode,Long> {
}

对应的班级接口

package com.example.neo4j.repository;
import com.example.neo4j.entry.GroupNode;
import org.springframework.data.neo4j.repository.Neo4jRepository;
public interface GroupRepository extends Neo4jRepository<GroupNode,Long> {
}

最后完成编写我们的 Controller

package com.example.neo4j.controller;
import com.example.neo4j.entry.*;
import com.example.neo4j.repository.GroupRepository;
import com.example.neo4j.repository.StudentRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/node")
@Slf4jpublic class GroupController { @Autowired   private StudentRepository studentRepository;  @Autowired   private GroupRepository groupRepository;  @GetMapping(value = "/create")  public void createNodeRelation() {  StudentNode studentNode1 = new StudentNode(); studentNode1.setName("Alen");    studentNode1.setSex("男");      StudentNode studentNode2 = new StudentNode();studentNode2.setName("Kai");     studentNode2.setSex("女");    studentRepository.save(studentNode1);     studentRepository.save(studentNode2);    GroupNode groupNode = new GroupNode();   groupNode.setName("火箭班");   groupNode.setNum("298");       // 增加关系       groupNode.addRelation(studentNode1, "includes");    groupNode.addRelation(studentNode2, "includes"); groupRepository.save(groupNode);   }
}

启动之后,访问​ ​http://localhost:8080/node/create​ ​

我们再去图谱数据库看看。

怎么样,使用Java 操作是不是也是非常简单的呢?这样的图谱数据库你会选择么?

Java操作Neo4J就是这么简单,#yyds盘点#相关推荐

  1. 用Python中的py2neo库操作neo4j,搭建简单关联图谱—基于家有儿女中的人物关系

         我第一次建立关联图谱用的是R语言,通过写代码帮公安挖掘团伙犯罪,并用图形展示团伙之间的关联关系.如有需要请关注 "阿黎逸阳的代码" 公众号的后续文章,会手把手教大家用R搭 ...

  2. Neo4j ③ 管理员操作, 备份恢复, 调优思路, 程序访问, 嵌入式, 服务器模式, Java 操作 Neo4j, 整合 SpringBoot

    目录 第四部分 Neo4j之Admin管理员操作 4.1 Neo4j - 数据库备份和恢复 4.2 调优思路 1.增加服务器内存 和 调整neo4j配置文件 2.neo4j刚启动数据是冷的需要预热 3 ...

  3. JAVA——Java操作MySQL数据库的简单工具类[CLASS:DatabaseUtil]

    预备知识 Java连接MySQL数据库 源代码 package club.zstuca.util;import java.sql.Connection; import java.sql.DriverM ...

  4. 图数据库(二):Java操作图数据库

    在上篇文章中,我们介绍了什么是Neo4j,什么是Cypher以及Neo4j的使用,今天我们学习一下如何使用Java操作Neo4j图数据库. Cypher查询 在使用Java操作Neo4j之前,我们先了 ...

  5. neo4j python 算法_python操作neo4j简单实例

    一:neo4j是什么 neo4j:Neo4j是一个高性能的,NOSQL图形数据库,有关于更多neo4j的资料出门右拐 二:python操作neo4j的实现 python中neo4j的操作可以利用驱动包 ...

  6. java对文件的操作详解_Java 对 Properties 文件的操作详解及简单实例

    Java 对 Properties 文件的操作详解及简单实例 发布于 2020-8-7| 复制链接 摘记: Java 对 Properties 文件的操作简介在 Java 中,我们常用 java.ut ...

  7. java图片简单爬虫_[Java教程]使用jsoup进行简单的爬虫操作爬取图片

    [Java教程]使用jsoup进行简单的爬虫操作爬取图片 0 2015-12-01 17:00:27 package com.guanglan.util;import java.io.File;imp ...

  8. java操作properties文件简单学习

    java操作properties文件的工具类简单封装: 注意:由于本地和环境和linux服务的路径有区别,或者jetty,resin,tomcat部署后,文件的路径也是有区别的.比如我们在linux上 ...

  9. java操作redis简单示例

    java操作redis简单示例     初学redis,在java语言和环境下完成redis的入门学习.              首先,官网下载源码,编译,安装,修改配置文件redis.conf中的 ...

最新文章

  1. 2012是团购移动电商年
  2. JAVA浮点数使用陷阱:2.7 和 8.1 / 3 比较
  3. 用公式实现动态设置图表的轴数据项
  4. js opener 的使用
  5. ubuntu 安装配置mysql
  6. 统赢编程软件_统赢PressCAD线割慢走丝编程软件的线割上下异形编程设定
  7. MTK超详细启动流程
  8. Java中判断String不为空的问题性能比较
  9. 126邮箱如何绑定qq邮箱服务器,126邮箱注册登陆入口(一招教你快速登录QQ/网易邮箱)...
  10. avr单片机c语言库,AVR单片机C语言编译器
  11. 前沿科技-混合现实(MR)远程协作辅助工具:微缩虚拟形象Mini-Me
  12. [金工实习报告]金工实习基本方法,车工/焊接/钳工/铣工/铸造/安全生产/3D打印等
  13. 【opencv学习之十二】opencv滑条及实例
  14. 诗词-已然绿盈盈蓝点缀
  15. 微信小程序覆盖map组件
  16. 如何实现有多少人购买了此商品
  17. elasticsearch学习 part4
  18. Java断点调试 idea断点调试 debug教程
  19. 交换机配置第七讲(不同vlan相互通信2)
  20. 嫦娥探月数据公布:高清真彩色月面图像首公开

热门文章

  1. 会员招募html5,会员招募活动策划方案
  2. ubutun安装与卸载软件
  3. 蓝桥杯—奇妙的数字(小明发现了一个奇妙的数字)
  4. 华为 linux 重启命令,华为服务器重启管理口
  5. python3.7教程百度云盘_Python新手教程百度网盘《怎么安装python3.7》
  6. #个人日记-电影《哆啦A梦:伴我同行2》观后感-20210530
  7. 贝叶斯网络应用实例一:胸部疾病诊所
  8. NVIDIA NX刷机,配置深度学习环境
  9. 服务的基本使用:定义、启动和停止服务
  10. python人名最多数统计,【Python 测验03】人名最多数统计