SpringBoot 整合 Neo4j|学习笔记

简介: 快速学习 SpringBoot 整合 Neo4j

开发者学堂课程【SpringBoot 实战教程 SpringBoot 整合 Neo4j】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/651/detail/10811


SpringBoot 整合 Neo4j


1、查询在 springboot 中如何在 neo4j 中使用图形数据库首先做相关依赖以下是 springboot 提供的依赖放入工程中做好 web 依赖

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-neo4j</artifactId>

</dependency>

2、做全局属性配置把以下放入全局配置中

配置文件中:

spring.data.neo4j.uri=http://localhost:7474访问地址

spring.data.neo4j.username=neo4j设置的用户名

spring.data.neo4j.password=123密码

创建 application.properties第一次访问 neo4j 用户名是 neo4j密码是 neo4j会让修改密码修改后密码是123。

3、按照数据库的思想实现相应的功能首先创建一个实体类建一个包, com.qianteng.pojo。

4、在 neo4j 中重点是节点和关系在这里建立的实体类是节点对应的实体类以及关系所对应的实体类在 com.qianteng.pojo 创建实体类命名为 usernode

除了定义属性还需要定义 nodeid存的时候是以图形的形式存的把它作为图形id

/ /表示的节点类型

@NodeEntity(label="User")节点所对应的实体类

public classUserNode { 会把这个类型存到neo4j数据库中

@GraphId

private Long nodeId;

//给用户配置属性指明普通属性

@Property

PrivateString userId;

@Property

private String name;

@Property

PrivateIntage ;

//生成 getset 方法

public Long getNodeId (){

ReturnnodeId;

}

public void setAge (int age) {

this.age = age;

}

5、创建关系类型,UserRelation。

表示用户与用户的关系在存的时候也是用图形方式存的所以要有图形 id表示关系必须是两个用户的关系

package com. qianfeng.pojo;

import org. neo4j . ogm. annotation . GraphId;

public class UserRelation {

@GraphId

PrivateLongid;

private UserNodestartNode;起始类型

private UserNode endNode; 结束类型

}

image.png

比如 tim 和 jackjack 认识 timtim 是 jack 的朋友jack 的节点就是用户节点jack相当于起始节点tim 相当于用户节点tim 和 lilitim 是起始节点lili是结束节点表示关系必须是两个用户所以要定义两 个节点类型

package com. qianfeng .pojo;

import org. neo4j . ogm. annotation. EndNode;

import org.neo4j .ogm. annotation. GraphId;

import org.neo4j .ogm. annotation. StartNode;

@RelationshipEntity (type="UserRelation")把关系存储到数据库中用户和用户之间的别名当两个用户在建立关系时就用这个名字

public class UserRelation { 表示关系实体类

@GraphId

private Long id;

@StartNode

private UserNode startNode;

@EndNode

private UserNode endNode ;

}

//生成setget方法

Public Long getId ()

return id;

public void setId (Long id) {

this.id=:id;

}

public UserNode getStartNode () {

return startNode;

}

public void setStartNode (UserNode startNode) {

this . startNode = startNode ;

}

public UserNode get EndNode () {

return endNode ;

}

public void setEndNode (UserNode endNode) {

this . endNode = endNode ;

}

6、创建 dao,com.qianfeng.dao,也可以是 mapper相当于操作数据库的第 dao 层

添加节点建立节点和节点之间的关系或者查询节点查询节点就是查询用户或者查询什么关系等等这里只需要写接口不需要写实现类似于 jpa写操作节点的 dao命名为 UserRepository

需要让它继承 GraphRepository这个类型就是节点类型那么增删改查的功能在这里都已经实现了

package com.qianfeng .dao;

import org. spring framework.data .neo4j . reposi tory .GraphRepository;

import com. qianfeng .pojo. UserNode ;

@Component

Publicinterface UserRepositoryextendsGraphRepository<UserNode>{接口

@Query("MATCH(n:User)RETURNn")return 用 n 代表返回

List<UserNode>getUserNodeList();查询用户节点

@Query("create(n:User{age:{age},name:{name}})RETURNn")

List<UserNode>addUserNodeList(@Param("name")Stringname   添加节点创建新用户要指定属性对应的值

@Param("age")intage);

}

7、创建接口命名为 UserRelationRepository,用户关系

package com. qianfeng .dao;

import org. springframework .data.neo4j . repository . GraphRepository;

import com. qianfeng.pojo.UserRelation;

public interface UserRe lationRepository extends

GraphReposi tory<UserRelation>

//增删改查的方法

@Component创建 dao 对象

PublicinterfaceUserRelationRepositoryextendsGraphRepository<UserRelation>{

@Query("matchp=(n:User)<-[r:UserRelation]->(n1:User)where

n.userId={firstUserId}andn1.userId={secondUserId}returnp")

List<UserRelation>findUserRelationByEachId(@Param("firstUserId")StringfirstUserId,@Param("secondUserId")StringsecondUserId);

@Query("match(fu:User),(su:User)wherefu.userId={firstUserId}

andsu.userId={secondUserId}createp=(fu)-[r:UserRelation]->(su) returnp")查询两个用户之间的关系还有查询条件有两个用户一个n一个n1,指定了要查询用户的id所以要接收两个值一个是左边用户的id值一个是右边用户的id值List<UserRelation>addUserRelation(@Param("firstUserId")StringfirstUserId,@Param("secondUserId")StringsecondUserId);

添加关系给相应 id 的用户建立两个关系

8、com.qianteng.service

UserService

写一个添加用户的功能添加关系也一样

package com. qianfeng. service;

import org. springframework . beans. factory . annotation . Autowired;

import org . springframework. stereotype .Service;

import com. qianfeng. dao. UserRepository;

@Service

public class UserService {

@Autowired

private UserRepository userRepository;

public void addUserNode (UserNodeuserNode)添加用户相当于用户节点

{

userRepository . addUserNodeList (userNode .getName () , userNode.getAge() ) ;

}

}

9、创建 controller命名为 Neo4jController

加注解调用 service注入写入一个功能保存用户节点

package com. qianfeng. controller;

import org. springframework .beans . factory . annotation. Autowired;

import org. springframework. stereotype . Controller;

import org. springframework . web .bind. annotation. Reques tMapping;

import com. qianfeng. service . UserService;

@Controller

public class Neo4jController {

@Autowired

private UserService userService;

@RequestMapping ("/ saveUser")

@ ResponseBody

public String saveUserNode ()

{

UserNode node=new UserNode () ;

node . setNodeId(11) ;

node . setUserId("666") ;

node . setName ("'张三") ;

node.setAge (25) ;

userService . addUserNode (node) ;

return " success";

}

10、扫描 service 和 controller都是以 com.qianfeng 为基础

@SpringBootApplication ( scanBasePackages="com.qi anfeng")

扫描 dao

@EnableNeo4jRepositories(basePackages="com.qianfeng.dao")

扫描是实体类

@EntityScan (basePackages="com. qianfeng .pojo")

11、访问 controller实现张三用户节点启动输入localhost:8080/saveUser

image.png

成功说明用户节点已经被添加到 neo4j 数据库Cypher 语句查询UserRepository.java MATCH(n: User ) RETURNn可以看见张三都是以图形的方式存储的

image.png

相关文章
|
8月前
|
Java 数据安全/隐私保护
Neo4j【付诸实践 01】SpringBoot集成报错org.neo4j.driver.exceptions.ClientException:服务器不支持此驱动程序支持的任何协议版本(解决+源代码)
Neo4j【付诸实践 01】SpringBoot集成报错org.neo4j.driver.exceptions.ClientException:服务器不支持此驱动程序支持的任何协议版本(解决+源代码)
392 1
|
4月前
|
NoSQL 前端开发 Java
使用 Spring Boot + Neo4j 实现知识图谱功能开发
在数据驱动的时代,知识图谱作为一种强大的信息组织方式,正逐渐在各个领域展现出其独特的价值。本文将围绕使用Spring Boot结合Neo4j图数据库来实现知识图谱功能开发的技术细节进行分享,帮助读者理解并掌握这一技术栈在实际项目中的应用。
289 4
|
7月前
|
NoSQL 搜索推荐 Java
使用Spring Boot实现与Neo4j图数据库的集成
使用Spring Boot实现与Neo4j图数据库的集成
|
6月前
|
存储 NoSQL Java
Spring Boot与Neo4j图数据库的集成应用
Spring Boot与Neo4j图数据库的集成应用
|
XML 存储 Java
Neo4j的springboot的简单实现
# 引言 今天带来通过springboot来操作neo4j的教程。 # pom.xml的依赖 ``` <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.
Neo4j的springboot的简单实现
|
消息中间件 Java RocketMQ
Springboot 集成 Rocketmq 消费者|学习笔记
快速学习 Springboot 集成 Rocketmq 消费者
1454 1
Springboot 集成 Rocketmq 消费者|学习笔记
|
消息中间件 IDE Java
Springboot 集成 Rocketmq 生产者|学习笔记
快速学习 Springboot 集成 Rocketmq 生产者
803 0
Springboot 集成 Rocketmq 生产者|学习笔记
|
NoSQL 安全 Java
SpringBoot 自动配置的原理|学习笔记
快速学习 SpringBoot 自动配置的原理
188 0
SpringBoot 自动配置的原理|学习笔记
|
SQL 监控 Java
SpringBoot的MyBatis工程配置|学习笔记
快速学习SpringBoot的MyBatis工程配置
239 0
SpringBoot的MyBatis工程配置|学习笔记
|
监控 Java 应用服务中间件
SpringBoot|学习笔记
快速学习SpringBoot
126 0
SpringBoot|学习笔记

热门文章

最新文章