12.整合neo4j

neo4j

官网下载:
https://neo4j.com/download-center/#community
教程:
http://neo4j.com.cn/public/cypher/default.html
bin下运行neo4j.bat console

在浏览器地址栏里输入http://localhost:7474
默认会跳转到 http://localhost:7474/browser
刚开始时,会弹出登录页面,默认的初始密码是neo4j,登录进去后会让你设置新的密码,设完后进入neo4j管理界面

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>
spring.data.neo4j.uri=http://localhost:7474
spring.data.neo4j.username=neo4j
spring.data.neo4j.password=123123
@MapperScan("com.fly.Mapper")
@EnableNeo4jRepositories(basePackages = "com.fly.UserDao")
public class SpringDemoApp{
package com.fly.pojo;

import org.neo4j.ogm.annotation.GraphId;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Property;

@NodeEntity(label = "User")
public class UserNode {
    @GraphId
    private Long nodeId;
    @Property
    private String userId;
    @Property
    private String name;
    @Property
    private String age;

    public Long getNodeId() {
        return nodeId;
    }

    public void setNodeId(Long nodeId) {
        this.nodeId = nodeId;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}
package com.fly.pojo;

import org.neo4j.ogm.annotation.EndNode;
import org.neo4j.ogm.annotation.GraphId;
import org.neo4j.ogm.annotation.RelationshipEntity;
import org.neo4j.ogm.annotation.StartNode;

@RelationshipEntity(type = "UserRelation")
public class UserRelation {
    @GraphId
    private Long id;
    @StartNode
    private UserNode startNode;
    @EndNode
    private UserNode endNode;

    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 getEndNode() {
        return endNode;
    }

    public void setEndNode(UserNode endNode) {
        this.endNode = endNode;
    }
}
package com.fly.UserDao;

import com.fly.pojo.UserRelation;
import org.springframework.data.neo4j.annotation.Query;
import org.springframework.data.neo4j.repository.GraphRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
public interface UserRelationRepository extends GraphRepository<UserRelation> {
    @Query("match p=(n:User)<-[r:UserRelation]->(n1:User) where n.userId={firstUserId} and n1.userId={secondUserId} return p")
    List<UserRelation> findUserRelationsByEachId(@Param("firstUserId")String firstUserId,@Param("secondUserId")String secondUserId);

    @Query("match (fu:User),(su:User) where fu.userId={firstUserId} and su.userId={secondUserId} create p=(fu)-[r:UserRelation]->(su) return p")
    List<UserRelation> addUserRelation(@Param("firstUserId")String firstUserId,@Param("secondUserId")String secondUserId);

}
package com.fly.UserDao;


import com.fly.pojo.UserNode;
import org.springframework.data.neo4j.annotation.Query;
import org.springframework.data.neo4j.repository.GraphRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
public interface UserRepository extends GraphRepository<UserNode> {
    @Query("MATCH (n:User) RETURN n")
    List<UserNode> getUserNodeList();

    @Query("create (n:User{age:{age},name:{name}}) RETURN n")
    List<UserNode> addUserNodeList(@Param("age")String age,@Param("name")String name);
    @Query("create (n:User{age:{age},name:{name},userId:{userId}}) RETURN n")
    List<UserNode> addUserNodeList(@Param("age")String age,@Param("name")String name,@Param("userId")String userId);
}
package com.fly.service;

import com.fly.UserDao.UserRepository;
import com.fly.pojo.UserNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public void addUserNode(UserNode userNode){
        userRepository.addUserNodeList(userNode.getAge(),userNode.getName());
    }

    public List<UserNode> getUserNodeList(){
        return userRepository.getUserNodeList();
    }
}
import com.app.SpringDemoApp;
import com.fly.UserDao.UserRelationRepository;
import com.fly.pojo.UserNode;
import com.fly.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;

@SpringBootTest(classes = SpringDemoApp.class)
@RunWith(SpringJUnit4ClassRunner.class)
public class UserServiceTest {
    @Autowired
    private UserService userService;

    @Autowired
    private UserRelationRepository userRelationRepository;
    @Test
    public void test1(){
        UserNode userNode = new UserNode();
        userNode.setNodeId(1L);
        userNode.setUserId("001");
        userNode.setName("张三儿");
        userNode.setAge("25");
        UserNode userNode2 = new UserNode();
        userNode2.setNodeId(2L);
        userNode2.setUserId("002");
        userNode2.setName("李四儿");
        userNode2.setAge("24");
        userService.addUserNode(userNode);
        userService.addUserNode(userNode2);
    }

    @Test
    public void test2(){
        List<UserNode> userNodeList = userService.getUserNodeList();
        for (UserNode userNode : userNodeList) {
            System.out.printf(userNode.getUserId());
        }
    }

    @Test
    public void test3(){
        userRelationRepository.addUserRelation("001","002");
    }
}

转载于:https://www.cnblogs.com/fly-book/p/11619609.html

【Neo4j系列】简化Neo4j数据库操作:一个基础工具类的开发之旅 在Neo4j系列我打算写一个Neo4j同步关系数据库、增删改查及展示的基础小系统,这篇文件先分享系统里面的基础工具类。 阅读详情

相关推荐

原生H5如何优雅拦截浏览器返回事件:全面屏侧滑退出的解决方案

本文深入探讨了在原生H5中如何优雅地处理浏览器返回事件,特别是针对全面屏手机侧滑返回手势的解决方案。核心是利用HTML5 History API,通过`history.pushState`方法在历史栈中插入记录,并监听`popstate`事件,从而实现在用户侧滑时平滑关闭全屏预览层而非直接退出页面,有效提升了移动端H5应用的原生交互体验。

i0j1k2l3m的博客 269

neo4j图数据库中创建关系的时候动态修改@RelationshipEntity(type = “xxx“)的关系名称

neo4j图数据库中创建关系的时候动态修改@RelationshipEntity(type = "xxx")的关系名称

weixin_56877622的博客 1216

TI DSP的 FFT与IFFT库函数的使用测试

/** * Copyright (C) 2013 Guangzhou Tronlong Electronic Technology Co., Ltd. - www.tronlong.com * * @file dsplib_fft.c * * @brief Example application main file. * This application will run FFT performance test. * * @author Tronlong <support@tron.

ToneChip的专栏,一个传统的嵌入式码农,裸机编程 2676

【SpringBoot】整合 Neo4j数据库

文章目录Neo4j数据库下载整合Neo4j需要导入的依赖配置信息启动测试 Neo4j数据库下载 项目开始前需要下载好Neo4j数据库,并成功启动。关于Neo4j的下载启动可以参考这篇博客:Neo4j安装使用。 整合Neo4j 需要导入的依赖 需要导入SpringBoot需要的依赖和neo4j的依赖: <dependencies> <!--springboot相关依赖--> <dependency> <

高朗的博客 1845

大疆 2021 嵌入式笔试题

在深圳做嵌入式,大疆公司绝对是 Top 级别的,大疆的技术栈也很深。

qq_38769551的博客 2496

反光柱定位算法中的移动机器人姿态计算原理-经典三边定位最小二乘法计算定位-直接法计算定位

(二)计算姿态方式是我们已经通过最小二乘得到了小车在地图中的位置或者是雷达在地图中的位置,又因为我们知道雷达与小车的安装坐标,所以可以求解出一其中一个坐标的知量,通过小车在地图中坐标与雷达在地图中坐标可以得到一条向量,通过计算向量在地图中的角度就能得到姿态了。与最小二乘三边测量法相比,新算法在动态调整、优化过程和鲁棒性方面优势明显,尤其适合动态环境下的机器人定位,而最小二乘三边测量法在动态复杂环境中精度相对较低。(一)与(二)的区别主要是在计算姿态上的算法不同。经典三边定位最小二乘法 (法一)

苏凯的博客 1140

neo4j图数据库在springboot中使用

1、pom文件 springboot2.0.5,jdk1.8 &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-data-neo4j&l...

chenxiaokee的博客 4425

【AI智能体】Spring AI Tool 从使用到实战详解

Spring AI Tool

congge 5864

Spring-Boot+Neo4j+节点之间关系网的搭建和查询

接着上一篇讲       上一篇我们学习了如何创建节点,以及查询节点,但未涉及二者之间的关系relationship,本篇,我们将通过简单的案列来完整的走一遍整个节点--关系--节点的流程,为了降低复杂度,关系是(1...n)单向的,也就是默认关系是Out出去的。一、场景节点Nodes:1.创建一个Coder类型的节点,代表程序员,属性有id,name,sex,hobby(姓名,性别,爱好)2.创

Appleyk的专栏 2万+

ESP32-C3蓝牙透传通信的BLE协议栈工程实践

蓝牙低功耗(BLE)透传是一种基于GATT服务模型的数据透明传输机制,其核心原理在于Peripheral设备通过广播建立连接,并在GATT Server层暴露可读写特征值实现双向数据通道。该技术具备低功耗、跨平台兼容性强、开发门槛适中等优势,广泛应用于智能硬件、工业传感器与嵌入式网关等场景。在实际工程中,透传稳定性高度依赖BLE协议栈的分层协同——Link Layer负责可靠连接建立,GATT Server则定义数据交互语义;而ESP32-C3的AT指令集正是对这两层能力的封装调度。本文聚焦BLE透传的关键

weixin_29859471的博客 123

Apollo Planning2.0决策规划算法代码详细解析 (1):环境搭建

1、官方提供连接:git clone https://github.com/ApolloAuto/application-pnc.git。此外,也更新了dreamview对pnc的支持,使得调试更加方便。apollo开源团队近期更新了planning版本,对代码进行了一定程度上的重构。(2)进入docker,并编译整个工程:./apollo.sh build_dbg。下载项目环境后使用aem进行环境配置;2、有一定基础建议直接拉取最新代码,自己手动进行编译。(1)环境安装: ./dev_start.sh。

自动驾驶Player的博客 1840

spring data neo4j 中节点实体之间的关系在代码中怎样维护

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33770878的博客 1367

Android 11.0 app添加校验锁(输入密码才能进入app)

11.0定制化开发中客户要求给app添加锁,就是点击app 图标时,会弹出Dialog,需要输入密码才能进入app中,就是应用校验锁, 最开始想到在Launcher3中实现,但是如果更换了默认Launcher 又不行了 所以最终还是得拦截app启动Activity 从这里入手了 Launcher与APP是在两个不同的进程中,他们之间的通信是通过Binder完成的,点击Launcher上的某个APP,这时会调用Launcher的startActivitySafely方法。 public boolean sta

安卓兼职framework和app工程师的博客 1952

OpenClaw知识图谱构建:Gemma-3-12b-it从文档提取实体关系

本文介绍了如何在星图GPU平台上自动化部署gemma-3-12b-it高性能开源大语言模型(LLM)WebUI镜像,实现从技术文档中自动提取实体关系以构建知识图谱。该方案特别适用于技术博主或研究人员快速整理海量文档,通过AI驱动的语义理解自动建立概念间的关联网络,显著提升知识管理效率。

weixin_42360846的博客 163

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Spring Boot 整合 Neo4j

Neo4j 是一个高性能的 ​​,适用于存储和查询 ​​ 和 ​​ 的数据。本教程将带你从零开始,在 ​​ 项目中整合 ​​,并实现基本的 ​​ 操作。

weixin_52578852的博客 1872

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Neo4j图数据库

随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系网,传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈几何级数增长,急需一种支持海量复杂数据关系运算的数据库,图数据库应运而生。社交领域:Facebook, Twitter,Linkedin用它来管理社交关系,实现好友推荐零售领域:eBay,沃尔玛使用它实现商品实时推荐,给买家更好的购物体验金融领域:摩根大通,花旗和瑞银等银行在用图数据库做风控处理。

m0_62943934的博客 7325

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Neo4j在java中的使用

Neo4j Server是相互操作性,安全性和监控的最佳选择。此外,作为独立应用程序,它比嵌入式配置更安全(客户端中的潜在故障不会影响服务器),并且更易于监控。如果我们选择使用这种模式,我们的应用程序将充当Neo4j服务器的客户端。要连接到Neo4j服务器,可以使用任何编程语言的REST 访问数据库。它是由应用程序的性质(neo4j是独立服务器 还是和程序在一起),性能,监控和数据安全性来决定架构选择。嵌入式Neo4j数据库是性能的最佳选择。通过指定数据存储的路径以编程方式访问嵌入式数据库。

延成的博客 2299

Springboot整合图像数据库Neo4j

“百度百科:Neo4j 是一个高性能的, NOSQL 图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的 Java 持久化引擎,但是它将结...

qq_18244417的博客 477

springboot整合图像数据库Neo4j

百度百科:     Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他...

WGH100817的博客 193

springboot 技术图谱_springboot整合图像数据库Neo4j

百度百科:Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全...

weixin_36076139的博客 337

neo4j springboot 日志_SpringBoot使用Neo4j

1.Neo4j简介Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到...

weixin_39914499的博客 587

springboot框架集成neo4j+d3.js

project-neo4j 一、功能介绍: 连接mysql、neo4j,实现将mysql数据插入neo4j中! 对neo4j数据进行增删改查,统计分析、关系遍历等功能 ! 源码下载地址:https://download.csdn.net/download/npf_java/10222241 二、JAR说明: springboot【1.5.9】 pri...

南鹏飞 技术博客 1万+

SpringBoot整合Neo4j:图数据库开发实战指南

图数据库作为处理复杂关联数据的利器,通过节点和关系的存储模型,在社交网络、推荐系统等场景展现出远超关系型数据库的性能优势。Spring Data Neo4j模块通过ORM思想将图数据库操作抽象化,开发者可以使用注解定义图实体、自动生成Cypher查询,并利用Repository模式实现高效数据访问。这种技术组合不仅能保持Neo4j的原生性能,还能显著提升开发效率,某电商平台实践显示其推荐系统响应时间从200ms优化至50ms。本文以电影推荐系统为例,详解从环境搭建、数据建模到性能调优的全流程实践,特别针对索

weixin_34239592的博客 543

Neo4J 特性CQL语句,函数,Springboot集成

随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系网,传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈几何级数增长,急需一种支持海量复杂数据关系运算的数据库,图数据库应运而生。社交领域:Facebook, Twitter,Linkedin用它来管理社交关系,实现好友推荐零售领域:eBay,沃尔玛使用它实现商品实时推荐,给买家更好的购物体验金融领域:摩根大通,花旗和瑞银等银行在用图数据库做风控处理。

m0_46690280的博客 1816

Neo4j图数据库入门笔记

图数据库是基于图论实现的一种NoSQL数据库,其数据存储结构和数据查询方式都是以图论为基础的,图数据库主要用于存储更多的连接数据。Neo4j的特性SQL就像简单的查询语言Neo4j CQL遵循属性图数据模型通过使用Apache Lucence支持索引支持UNIQUE约束包含一个用于执行CQL命令的UI:Neo4j数据浏览器支持完整的ACID(原子性,一致性,隔离性和持久性)规则采用原生图形库与本地GPE(图形处理引擎)支持查询的数据导出到JSON和XLS格式提供了REST API,可以被任何编程语言(如Ja

Shawn的个人博客 1917
上一篇: 11.文件上传
下一篇: maven仓库mirrors
dffxwe51549
博客等级 码龄12年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值