(零基础学习)Neo4j+Spring boot 自行定义属性
前置知识
1.Neo4j :属性
节点和关系都可以设置自己的属性。 属性是由Key-Value键值对组成,键名是字符串。属性值是要么是原始值,要么是原始值类型的一个数组。比如+String+,+int+和i+int[]+都是合法的。
注意
null不是一个合法的属性值。 Nulls能代替模仿一个不存在的Key。
…/_images/image3.9.png
属性值类型
Type Description Value range
boolean true/false
byte 8-bit integer -128 to 127, inclusive
short 16-bit integer -32768 to 32767, inclusive
int 32-bit integer -2147483648 to 2147483647, inclusive
long 64-bit integer -9223372036854775808 to 9223372036854775807, inclusive
float 32-bit IEEE 754 floating-point number
double 64-bit IEEE 754 floating-point number
char 16-bit unsigned integers representing Unicode characters u0000 to uffff (0 to 65535)
String sequence of Unicode characters
如果要了解float/double类型的更多细节,请参考:Java Language Specification。

2.Cypher语法
本人Cypher语法 同样小白 仅分享(有不正确的地方请包涵)
neo4j 中文网
节点操作
创建节点
创建一个标签为zhan的节点 (标签:将数据进行分类,方便管理)
create(n:zhan);// 这里的n就是随便起的一个变量名,代指当前实体或者关系。
创建一个标签为zhan 且带有属性值的节点
create(n:zhan{id:1,name:'小明',age:20});
查询节点
按照标签查询
match (n:zhan) return n;
按照id进行查询
match (n:zhan) where id(n) = 38023 return n;
多属性条件查询
match (n:zhan) where n.name = '小明'and n.age = 20 and n.id = 1 return n;
添加多标签
match (n:zhan) where id(n) = 38023 set n:zhan1 return n;
match (n:zhan) where id(n) = 38023 set n:zhan2 return n;
移除标签
match (n:zhan) where id(n) = 38023 remove n:zhan2 return n;
match (n:zhan) where id(n) = 38023 remove n:zhan1 return n;
修改属性
match (n:zhan) where n.name='小明' set n.name = '小红' return n;
match (n:zhan) where n.name='小明' set n.name = '小红' set n.age = '200' return n;
删除实体
match (n:zhan) where n.name = '小王' delete n;
相信 已发现 规律 * —— *
关系操作
新建关系和实体
1. 无实体
create (n:zhan{name:'小张'})-[r:test] -> (m:zhan{name:'小李'})
create (n:zhan{name:'小黄'})-[r:test{name:'夫妻'}] -> (m:zhan{name:'小八'})
2.有实体
match (n:zhan),(m:zhan) where n.name = '小李' and m.name = '小八'
create (n)-[r:test{name:'儿子'}]->(m) ;
修改属性
match p = (n)-[r:test]->(m) where r.name='朋友' set r.name='闺蜜' return p;
关系添加属性
match p = (n)-[r:test]->(m) where r.name='闺蜜' set r.color='红色' return p;
删除关系
match (n)-[r:relation]->(m) where r.name = '闺蜜' delete r;
修改标签
【注意】neo4j是不支持修改关系标签
修改标签的操作是重新创建一个关系删除原关系
MATCH (n)-[r:test]->(m) where r.name='闺蜜' #搜出来想要修改的关系
CREATE (n)-[r2:relation]->(m) # 新建关系
SET r2 = r # copy原属性
DELETE r # 删除
高级搜索 …
3.Spring boot ,Maven 基本知识
Neo4j + Java api
1.Maven
【注意】:Spring boot 版本 2.2 以上
<!-- neo4j--><dependency><groupId>org.neo4j</groupId><artifactId>neo4j-ogm-http-driver</artifactId></dependency>
<!-- spring neo4j--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-neo4j</artifactId></dependency>
2.application.yml
neo4j:uri: bolt://******:***username: neo4jpassword: ''
3.Node 类

4.关系类
@RelationshipEntity //表示关系类型
@Data //get set
@AllArgsConstructor//会生成一个包含所有变量的构造方法,默认生成的方法是 public 的
@NoArgsConstructor // 生成一个无参数的构造方法
public class KnowledgePointsRelation {@Id@GeneratedValueprivate Long id;private Date createTime;private String name;/*** 起始节点的实体*/@StartNodeprivate KnowledgePointsNose KnowledgePointsFrom;/*** 终止节点的实体*/@EndNodeprivate KnowledgePointsNose KnowledgePointsTo;public KnowledgePointsRelation(KnowledgePointsNose KnowledgePointsFrom,KnowledgePointsNose KnowledgePointsTo,String name){this.KnowledgePointsFrom=KnowledgePointsFrom;this.KnowledgePointsTo=KnowledgePointsTo;this.name=name;}
}
Repository层
public interface KnowledgePointsNoseRepository extends Neo4jRepository<KnowledgePointsNose,Long> {
}
public interface KnowledgePointsRelationRepository extends Neo4jRepository<KnowledgePointsRelation,Long> {
}
同样:

neo4j 结合现有方法
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//package org.springframework.data.repository;import java.util.Optional;@NoRepositoryBean
public interface CrudRepository<T, ID> extends Repository<T, ID> {<S extends T> S save(S var1);<S extends T> Iterable<S> saveAll(Iterable<S> var1);Optional<T> findById(ID var1);boolean existsById(ID var1);Iterable<T> findAll();Iterable<T> findAllById(Iterable<ID> var1);long count();void deleteById(ID var1);void delete(T var1);void deleteAll(Iterable<? extends T> var1);void deleteAll();
}
Test(测试新增)
CustomerNode customerNode=new CustomerNode();customerNode.setName(name);customerNode.setAge(age);customerRepository.save(customerNode);CustomerNode customerNodeTo=customerRepository.findByName(nameTo);if(customerNodeTo !=null){CustomerRelation customerRelation=new CustomerRelation(customerNode,customerNodeTo,remark);customerRelationRepository.save(customerRelation);}
相关文章:
(零基础学习)Neo4j+Spring boot 自行定义属性
前置知识 1.Neo4j :属性 节点和关系都可以设置自己的属性。 属性是由Key-Value键值对组成,键名是字符串。属性值是要么是原始值,要么是原始值类型的一个数组。比如String,int和iint[]都是合法的。 注意 null不是一个合法的属性值。 Nulls能…...
【JavaEE】Java的文件IO
文件IO操作 Linux 下的文件操作讲解Java中的文件操作 -- 对文件的增删改查Java中对文件内容的操作 -- 读写操作使用案例 Linux 下的文件操作讲解 在我的Linux栏目下有, 如有需要, 点击下面进行跳转: 内存级文件系统语言级别的文教操作磁盘文件 Java中的文件操作 – 对文件的…...
域名解析与记录
域名解析是将域名转换为IP的过程,使得人们能够直接通过域名访问网站,而不用记繁琐的IP地址信息。而在域名解析中,CNAME记录和A记录是两个不同的记录类型。 A记录(Address Record,地址记录)是指将一个域名解…...
Android 13.0 第三方无源码apk授予QUERY_ALL_PACKAGES等其他权限的方法
1.概述 在13.0的系统产品中,对于内置第三方低版本app时,会有某些权限的冲突,导致在启动app时,崩溃掉,在查询相关日志发现是报权限的问题,所以就需要在安装解析app的时候,授予权限 2.第三方无源码apk授予QUERY_ALL_PACKAGES等其他权限的方法的核心类 /frameworks/base…...
【CSS】gird 网格
网格(Grid)是一种基于列数的布局系统,它可以帮助开发者创建具有水平和垂直分隔的页面布局。在CSS中,Grid是一种非常强大的布局工具,可以轻松地创建复杂的布局结构。Grid的主要属性包括: grid-template-col…...
(未完待续)【Netty专题】Netty实战与核心组件详解
目录 前言阅读对象阅读导航前置知识课程内容一、Netty简介1.1 Netty是什么1.2 Netty有什么优势 二、第一个Netty程序2.1 Netty简单使用示例2.2 代码解读2.3 Netty的特性2.3.1 Netty的事件 2.4 Netty线程模型 三、Netty核心组件详解(未完待续)3.1 EventLo…...
“第四十五天” 数据结构基本概念
目前看的有关数据结构的课,估计这周就看完了,但感觉差很多,还是和c一样,这样过一下吧。但可能比较急,目前是打算争取寒假回家之前把四大件都先大致过一遍。 数据结构里面有很多新的定义和概念,学到现在&am…...
《java 桌面软件开发》swing 以鼠标为中心放大缩小移动图片
swing 使用Graphic2D 绘制图片,要实现对图片进行缩放和自由拖动。 1.以鼠标所在的位置为中心,滚轮控制缩放 2.缩放后再支持鼠标拖动。 基本原理: 利用scale() 函数。进行缩放。但是要注意的地方是,如果是在 public void paintCom…...
浅析人脸活体检测技术的功能及几种分类
在日常生活工作中,出现了人脸验证、人脸支付、人脸乘梯、人脸门禁等等常见的应用场景。这说明人脸识别技术已经在门禁安防、金融行业、教育医疗等领域被广泛地应用,人脸识别技术的高速发展与应用同时也出现不少质疑。其中之一就是人脸识别很容易被照片、…...
【Java基础面试三十五】、谈谈你对面向接口编程的理解
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:谈谈你对面向接口编程的…...
利用TreeMap来达成离散化的目的
假如有一些奶牛,他们有种类的区别,我们设黑色奶牛的id为1000010000,白色为1,诸如此类以此类推还有红色等各种颜色,接下来给你一群奶牛的颜色id让你统计每种颜色的奶牛有几头。 如过我们使用数组显然1000010000会爆空间…...
PG14安装_rpm方式
一、前期准备 发现生产环境有用rpm安装,故整理安装rpm安装步骤,目的是准备walminer恢复数据用的环境 二、安装包下载 https://download.postgresql.org/pub/repos/yum/ 含多个版本 https://download.postgresql.org/pub/repos/yum/14/redhat/rhel-7-x…...
水管安装过滤器笔记
文章目录 方案准备工具剪管钳热熔器软管接头及单向阀扳手 操作过程花洒 搬家后,水质不行,洗脸掉皮,洗头以前不掉头皮屑的,居然也掉头皮屑。有必要简单过滤下了。 水质情况,并不是脏脏的的那种水,看上去还比…...
【Objective-C】浅析Block及其捕获机制
目录 Block的基本使用Block的声明Block的实现Block的调用 Block作为形参使用Block作为属性使用给Block起别名Block的copy Block的捕获机制auto类型的局部变量__block浅析static类型的局部变量全局变量 其他问题 Block的基本使用 什么是Block? Block (块…...
GitHub和Gitee的区别以及具体使用
文章目录 GitHub和GiteeGitHub和Gitee区别GitHub的使用Gitee的使用 GitHub和Gitee GitHub和Gitee区别 速度不同:GitHub位于美国,而Gitee位于中国。这意味着在中国使用Gitee可能会有更快的访问速度和更好的稳定性。如果我们希望体验Git飞一般的速度&…...
使用Redis实现分布式锁解决商品超卖问题(接上篇文章)
1. RedLock(红锁)简介 RedLock是一种用于分布式系统的锁定算法,旨在提供分布式锁的高可用性和分布式容错性。它是由Redis的创建者Salvatore Sanfilippo提出的,用于克服Redis单实例的单点故障问题。RedLock的目标是确保在多个Redis…...
2001-2022年全国290+个地级市高铁开通数据
2001-2022年全国290个地级市高铁开通数据 1、时间:2001-2022年 2、范围:298地级市(293地级市数(其中莱芜市2019年撤市设区)4直辖市数 ) 3、来源:国家铁路局、铁路客货运输专刊及相关统计 国…...
【Java 进阶篇】深入浅出:Bootstrap 轮播图
在现代网页设计中,轮播图是一个常见的元素。它们可以用于展示图片、广告、新闻、产品或任何您希望吸引用户注意力的内容。要实现一个轮播图,您通常需要一些复杂的HTML、CSS和JavaScript代码,这对于初学者来说可能会感到困难。但幸运的是&…...
75. 颜色分类
75. 颜色分类 双指针——快慢指针 class Solution {public void sortColors(int[] nums) {int n nums.length;int p0 0;for(int i 0; i < n; i){if(nums[i] 0){swap(nums, p0, i);p0;}}int p1 p0;for(int i p0; i < n; i){if(nums[i] 1){swap(nums, p1, i);p1;}…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...
CppCon 2015 学习:Simple, Extensible Pattern Matching in C++14
什么是 Pattern Matching(模式匹配) ❝ 模式匹配就是一种“描述式”的写法,不需要你手动判断、提取数据,而是直接描述你希望的数据结构是什么样子,系统自动判断并提取。❞ 你给的定义拆解: ✴ Instead of …...
leetcode 386. 字典序排数 中等
给你一个整数 n ,按字典序返回范围 [1, n] 内所有整数。 你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。 示例 1: 输入:n 13 输出:[1,10,11,12,13,2,3,4,5,6,7,8,9]示例 2: 输入:n 2…...
