(零基础学习)Neo4j+Spring boot 自行定义属性

news2024/12/25 0:51:09

前置知识

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: neo4j
      password: ''
3.Node 类

在这里插入图片描述

4.关系类
@RelationshipEntity //表示关系类型
@Data //get set
@AllArgsConstructor//会生成一个包含所有变量的构造方法,默认生成的方法是 public 的
@NoArgsConstructor // 生成一个无参数的构造方法
public class KnowledgePointsRelation {
    @Id
    @GeneratedValue
    private Long id;
    private Date createTime;
    private String name;

    /**
     *  起始节点的实体
     */
    @StartNode
    private KnowledgePointsNose KnowledgePointsFrom;
    /**
     * 终止节点的实体
     */
    @EndNode
    private 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);
        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1117942.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

建筑模板的厚度对价格有多大影响?

建筑模板的厚度对价格有一定的影响&#xff0c;以下是关于建筑模板厚度对价格影响的一些信息&#xff1a; 1. 厚度与价格的关系&#xff1a; - 建筑模板的厚度越大&#xff0c;通常价格也会相应增加。这是因为生产厚度较大的模板需要更多的原材料和工艺成本。 - 厚度较薄的建筑…

Virtualbox Manjaro kde虚拟机系统闪烁

过程 https://blog.csdn.net/weixin_44220976/article/details/133954801 有次更新了Manjaro虚拟机系统之后发生闪烁 • 不操作不闪烁 • 鼠标光标悬浮到桌面的文件、文件夹上&#xff0c;所有文件、文件夹图标消失&#xff0c;变成&#xff1a; 只有悬浮位置有个半透明的框 …

股票价格预测 | Python实现基于LSTM的股票预测模型(keras)

文章目录 效果一览文章概述模型描述源码设计参考资料效果一览 文章概述 今儿举一个案例,围绕 LSTM(Long Short-Term Memory)神经网络的原理,展示如何使用Python和深度学习库Keras构建LSTM模型,以及如何使用这个模型来预测时间序列数据。 以股票价格预测为例,这是LSTM在金…

LABVIEW 安装教程(超详细)

目录 LabVIEW2017&#xff08;32/64位&#xff09;下载地址&#xff1a; 一 .简介 二.安装步骤&#xff1a; LabVIEW2017&#xff08;32/64位&#xff09;下载地址&#xff1a; 链接&#xff1a; https://pan.baidu.com/s/1eSGB_3ygLNeWpnmGAoSwcQ 密码&#xff1a;gjrk …

DataX-web安装部署和使用

DataX-web的环境准备 MySQL (5.5) 必选&#xff0c;对应客户端可以选装, Linux服务上若安装mysql的客户端可以通过部署脚本快速初始化数据库 JDK (1.8.0_xxx) 必选 DataX 必选 Python (2.x) (支持Python3需要修改替换datax/bin下面的三个python文件&#xff0c;替换文件在do…

图书教材经营小程序商城的作用是什么

线下图书教材店非常多&#xff0c;在以前线下店是学生、学者们经常去的场所&#xff0c;每到周末人流不绝&#xff0c;但随着互联网发展以及客户消费升级&#xff0c;如今线下书店人流量非常少&#xff0c;除了头部品牌可以支撑外&#xff0c;中小品牌几乎很难生存。 同时加之…

智慧公厕:打造无人值守的公共厕所运营管理服务

智慧公厕是在"厕所革命"的背景下产生的物联网应用解决方案&#xff0c;结合物联网高精尖技术的中期科技智慧厕所&#xff0c;是智慧城市公共厕所应用解决方案的代表。它提供了一系列监测应用功能&#xff0c;包括监测公厕内部人体活动状态、人体存在状态、空气质量情…

【论文笔记】Far3D: Expanding the Horizon for Surround-view 3D Object Detection

原文链接&#xff1a;https://arxiv.org/pdf/2308.09616.pdf 1. 引言 目前的环视图图像3D目标检测方法分为基于密集BEV的方法和基于稀疏查询的方法。前者需要较高的计算量&#xff0c;难以扩展到长距离检测。后者全局固定的查询不能适应动态场景&#xff0c;通常会丢失远距离…

进阶课1——声纹识别

声纹识别是一种生物识别技术&#xff0c;也称为说话人识别&#xff0c;包括说话人辨认和说话人确认两种技术。该技术通过将声信号转换成电信号&#xff0c;再使用计算机进行识别&#xff0c;不同的任务和应用会使用不同的声纹识别技术&#xff0c;例如在缩小刑侦范围时可能需要…

如何使用积分系统增强用户留存?会员积分体系建设方式介绍

为什么别人家的积分系统能够成功吸引并维护10万个忠实粉丝&#xff0c;而你的积分系统却鲜有人问津&#xff1f;本文将详细解释积分系统如何与会员体系相互关联&#xff0c;以激发会员的复购和升级行为。 想要做好用户留存&#xff0c;互动交流是至关重要的一部分。企业需要灵…

Python--练习:使用while循环求1~100之间,所有偶数的和(涉及if判断是不是偶数)

案例&#xff1a;求1~100之间&#xff0c;所有偶数的和 思考&#xff1a; 先套用原有基础模式&#xff0c;之后再思考其他的。 其实就是在之前文章 Python--练习&#xff1a;使用while循环求1..100的和-CSDN博客 的基础上&#xff0c;再判断如果获取到里面的全部偶数&#…

前端时间分片渲染

在经典的面试题中&#xff1a;”如果后端返回了十万条数据要你插入到页面中&#xff0c;你会怎么处理&#xff1f;” 除了像 useVirtualList 这样的虚拟列表来处理外&#xff0c;我们还可以通过 时间分片 来处理 通过 setTimeout 直接上一个例子&#xff1a; <!--* Auth…

苹果遭双重暴击,品控翻车致iPhone15价格暴跌千元,比iPhone14更便宜

苹果近期可谓屋漏偏逢连夜雨&#xff0c;上市销售才不到一个月&#xff0c;就在中国市场被国产5G手机击败&#xff0c;日前第三方渠道对iPhone15的报价也持续下跌&#xff0c;其中iPhone15plus更是下跌超千元&#xff0c;显示出iPhone15似乎真的卖不动了。 据第三方渠道的报价显…

面试官:如何理解CDN?说说实现原理?

一、是什么 CDN (全称 Content Delivery Network)&#xff0c;即内容分发网络 构建在现有网络基础之上的智能虚拟网络&#xff0c;依靠部署在各地的边缘服务器&#xff0c;通过中心平台的负载均衡、内容分发、调度等功能模块&#xff0c;使用户就近获取所需内容&#xff0c;降…

51系列—基于51单片机的电子万年历设计

本文主要介绍基于51单片机的电子万年历设计 前言 电子万年历是单片机系统的一个应用&#xff0c;由硬件和软件相配合使用。硬件由主控器、时钟电路、温度检测电路、显示电路、键盘接口5个模块组成。主控模块用AT89C52、时钟电路用时钟芯片DS1302、显示模块用LED数码管、温度检…

【CGSSA-BP预测】基于混合混沌-高斯变异-麻雀算法优化BP神经网络回归预测研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

关于ibatis的一些用法——1(基本语法)

关于ibatis的一些用法——1&#xff08;基本语法&#xff09; 1. 前言1.1 唠叨1.2 官网1.2.1 官网地址1.2.2 价值文档1.2.2.1 Data Mapper1.2.2.2 其他 1.3 价值 IT技术问答网站 2. 基本语法2.1 关于 in 的用法2.2 关于驼峰问题2.3 3. 1. 前言 1.1 唠叨 本不想整这些老框架的…

在edge浏览器中安装好了burp的ca证书,浏览器依旧不能访问https的原因

在edge浏览器中安装好了burp的ca证书&#xff0c;浏览器依旧不能访问https的原因 1.SwitchyOmega代理插件设置2.CA证书方法1方法2 1.SwitchyOmega代理插件设置 严格安装以下图片执行&#xff0c;不可少写或多写 2.CA证书 方法1 下载好证书&#xff0c;先导入到edge浏览器的中…

商业智能的利用:打造成功的业务战略之道

在当今快节奏和数据驱动的商业环境中&#xff0c;制定稳健的商业战略对于实现可持续的增长和保持竞争力至关重要。商业智能&#xff08;BI&#xff09;是能够显著提高业务战略有效性的关键因素之一。本文将深入探讨商业智能的定义、其在战略制定中的重要性&#xff0c;以及如何…

作为资深IT从业者,我高度推荐这款智能团队协作工具

作为一名资深的IT从业人员,我最近发现了一款非常不错的团队协作和远程办公工具,它可以大大提高企业和团队的工作效率,所以今天我就向大家强烈推荐下这款产品。 这款产品名叫TeamLinker,它是一个集成了项目管理、文档协同、视频会议等多种功能于一体的智能化团队协作平台。以下…