neo4j使用详解(终章、neo4j的java driver使用模板及工具类——<可用于生产>)

请添加图片描述

Neo4j系列导航:
neo4j安装及简单实践
cypher语法基础
cypher插入语法
cypher插入语法
cypher查询语法
cypher通用语法
cypher函数语法
neo4j索引及调优
neo4j java Driver等更多


1. 简介

本文主要是java使用neo4j driver操作neo4j的模板项目及非常有用的工具类,主要包括:

  1. 图谱操作的http请求参数及响应参数标准数据结构定义(node,edge,graph等)
  2. 一次性操作多个node,多个edge或者path(graph)的模板代码工具类
  3. 使用事务一次提交多个cql的使用模板
  4. 可以支持连接多个neo4j实例的方法
  5. 使用时保证sql注入的实现

2.项目架构

3.实现

3.1.pom文件

因为此项目使用的是jdk8,所以neo4j使用的是3.x版本,更多版本适配请参照: neo4j安装及简单实践

<?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.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version><relativePath/></parent><groupId>com.test</groupId><artifactId>neo4j-template</artifactId><version>1.1.0</version><name>neo4j-template</name><description>neo4j模板服务</description><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId></dependency><!--neo4j的driver依赖 --><dependency><groupId>org.neo4j.driver</groupId><artifactId>neo4j-java-driver</artifactId><version>4.4.9</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId></dependency><dependency><groupId>org.javatuples</groupId><artifactId>javatuples</artifactId><version>1.2</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
</project>

3.2.controller层

controller怎么写不重要,主要为了保持项目的完整性,使用时可以根据业务需求开发。

@Api(tags = "图数据库接口")
@Validated
@RestController
public class GraphController {@Autowiredprivate GraphService service;@ApiOperation("添加图谱")@PostMapping("/v1/graph")public Response<String> put(@RequestBody @Valid GraphReqDto dto) {service.post(dto);return BdResponse.success();}@ApiOperation("删除图谱")@PostMapping("/v1/graph/{label}")public Response<String> delete(@PathVariable @NotBlank String label, @RequestBody Map<String, Object> dto) {service.delete(label, dto);return BdResponse.success();}@ApiOperation("查询图谱根据label")@GetMapping("/v1/graph/{label}")public Response<GraphDbMd> queryByLabel(@PathVariable @NotBlank String label) {return Response.success(service.queryByLabel(label));}@ApiOperation("查询节点的入度节点")@GetMapping("/v1/graph-in-vertex/{label}/{id}")public Response<GraphDbMd> queryInVertexById(@PathVariable @NotBlank String label, @PathVariable @NotBlank String id) {return Response.success(service.queryAllInVertexById(label, Long.parseLong(id)));}@ApiOperation("查询节点的出度节点")@GetMapping("/v1/graph-out-vertex/{label}/{id}")public Response<GraphDbMd> queryOutVertexById(@PathVariable @NotBlank String label, @PathVariable @NotBlank String id) {return Response.success(service.

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

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

相关文章

我三战华东师范大学的同桌真的很牛

标题党一下&#xff0c;其实是我的一个关系很好的高中同桌死磕华东师范大学三年&#xff0c;最终第二名上岸的故事。 其实我们是同一届的&#xff0c;我为了早点走选择了个排名还行的双非院校就走了&#xff0c;而我这个同桌相当有毅力&#xff0c;他能坚持这么久我其实很佩服&…

微信小程序开发一(常用的标签)

去微信公众平台注册账号确定怎么操作去网上找找 网址&#xff1a;微信公众平台 (qq.com)https://mp.weixin.qq.com/https://mp.weixin.qq.com/ 微信开放文档中找到工具栏下载微信开发者工具 网址&#xff1a;微信开发者工具&#xff08;稳定版 Stable Build&#xff09;下载地…

JavaWeb开发02-MYSQL-DDL-DML-DQL-多表设计-多表查询-事务-索引

一、MySQL概述 通过SQL语句可以操作数据库 关系型数据库&#xff1a; 只要是关系型数据库就可以用SQL语句这一统一标准进行操作数据库 1.MYSQL数据模型 客户端通过SQL语句交给了数据库管理系统DBMS&#xff0c;进行相应操作&#xff0c;创建一个一个数据库&#xff0c;体现为一…

如何理解信创产品?成为信创产品?

信创产品是指运用信息技术手段创造的产品&#xff0c;它是数据安全、网络安全的基础&#xff0c;也是新基建的重要组成部分。信创产品包括了IT基础设施如CPU芯片、服务器、存储、交换机、路由器、各种云和相关服务内容&#xff1b;基础软件如数据库、操作系统、中间件&#xff…

JRT在线初始化完善

之前实现的在线初始化留了个尾巴&#xff0c;那就是环境下载页构造zip包的时候没修改JRTBrowser的连接串地址为当前网站&#xff0c;这样就要求网站部署好之后给用户下载之前有人要把服务器的浏览器地址配置好。这样就增加一个运维工作&#xff0c;如果忘了或者不知道的人就会导…

nuxt3使用记录四:加载静态资源时路径的写法研究

在上一篇记录了NUXT进行SSG构建时&#xff0c;不仅会构建纯静态的html文件&#xff0c;也会构建一堆js文件。而如果网页中有加载静态资源&#xff0c;如图片&#xff0c;这时就需要注意了&#xff0c;不能简单的使用官网说的<img src"~/assets/img/nuxt.png" alt&…

Linux进阶---常见符号及其含义、常见报错

一、常见符号及其含义&#xff08;重要&#xff09; 二、 常见报错 • 找不到文件、文件不存在&#xff1a;No such file or directory • 没有权限 &#xff1a;Permission denied • 命令不存在 &#xff1a;command not found 1.找不到文件、文件不存在&#xff1a;No s…

AI智能电销机器人是什么?能给我们带来哪些便利?

科技的飞速发展&#xff0c;让很多“懒人”的幻想变成了现实&#xff0c;越来越多的人工智能产品被发明出来甚至完全替代日常生活中的工作。比如在电销行业&#xff0c;很多企业选择AI智能电销机器人进行外呼。那么你了解多少AI智能电销机器人呢&#xff1f;和小编kelaile520一…

声明v.s.定义

参考&#xff1a;http://t.csdnimg.cn/1xnzA 变量的定义&#xff1a;用于为变量分配存储空间&#xff0c;还可以为变量指定初始值&#xff0c;在程序中&#xff0c;变量有且仅有一个定义。变量的声明&#xff1a;用于向程序表明变量的类型和名字。在程序中&#xff0c;变量可以…

SAP SD学习笔记06 - 受注的据否,受注的理由,简易变更(一括处理)

上文讲了一括处理和Block&#xff08;冻结&#xff09;处理。 SAP SD学习笔记05 - SD中的一括处理&#xff08;集中处理&#xff09;&#xff0c;出荷和请求的冻结&#xff08;替代实现承认功能&#xff09;-CSDN博客 本章继续讲SAP的流程中一些常用的操作。 1&#xff0c;受注…

Flume 入门教程

内容目录 Flume 简介 架构和基本概念 多种架构模式 Flume 安装部署 Flume 简介 Flume 是一个分布式、可靠且高可用的数据收集、聚合和传输系统&#xff0c;主要用于高效地处理大规模日志数据。设计之初&#xff0c;它主要服务于日志管理领域&#xff0c;但其灵活性和可扩展…

语言的未来:深度学习在自然语言处理中的革命

语言的未来&#xff1a;深度学习在自然语言处理中的革命 1 引言 自古以来&#xff0c;语言就是人类表达思想、传递信息、进行社会互动的基石。语言的复杂性既体现在其变化多端的语义、句法和语用层面&#xff0c;同时也反映在人类如何理解和产生自然语言的深奥之中。在这一节中…

009、Python+fastapi,第一个后台管理项目走向第9步:ubutun 20.04下安装vscode+git环境配置

一、说明 git是一定要配置的&#xff0c;由于是白嫖的无影云电脑&#xff0c;东西得保存在网上&#xff0c;就继续白嫖gitee吧&#xff0c;显然国内github是不太合适的了 二、安装git 直接安装sudo apt install -y git git --version git version 2.25.1 三、配置git 在git上…

OSPF星型拓扑和MGRE全连改

一&#xff0c;拓扑 二&#xff0c;要求 1&#xff0c;R6为ISP只能配置IP地址&#xff0c;R1-R5的环回为私有网段 2&#xff0c;R1/4/5为全连的MGRE结构&#xff0c;R1/2/3为星型的拓扑结构&#xff0c; 3&#xff0c;R1为中心站点所有私有网段可以互相通讯&#xff0c;私有网段…

Spring AI,调用OpenAI大模型接口,让ChatGPT给你讲笑话

前言 Spring最近刚刚推出了SpringAI&#xff0c;封装了AI大模型接口的使用。本文将参考Spring官网案例&#xff0c;一步步教你如何调用OpenAI的接口&#xff0c;让ChatGPT接口返回一个笑话。 前提条件 请下载并安装好JDK17或更新的版本&#xff0c;本文使用的是JDK21。JDK下…

基于百度文心大模型全面重构,小度正式推出AI原生操作系统DuerOS X

4月16日&#xff0c;以“创造未来”为主题的2024百度Create AI开发者大会在深圳举办。百度集团副总裁、小度科技CEO李莹正式发布了小度新一代操作系统DuerOS X&#xff0c;该操作系统是小度基于百度文心大模型推出的全球首个AI原生操作系统。李莹表示&#xff1a;“作为⽂⼼⼤模…

【漏洞复现】IP-guard WebServer getdatarecord接口处存在权限绕过漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

基于Java+Vue的校园交友系统(源码+文档+包运行)

一.系统概述 选题背景&#xff1a; 在大学校园中&#xff0c;学生们面临着新的环境和人际关系的挑战。有些学生可能感到孤独或者希望扩展自己的社交圈子&#xff0c;寻找志同道合的朋友或者潜在的伴侣。因此&#xff0c;设计一款校园交友平台具有重要意义。 研究意义&#xff1…

Java内存模型和 JVM 内存运行时

文章目录 前言一、什么是Java 的内存模型&#xff1f;二、什么是 JVM 的运行时数据区Java8 之前和之后的区别JVM 内存模型JVM 内存区域JVM 内存垃圾回收JVM如何判断哪些对象不在存活&#xff1f;JVM运行过程中如何判断哪些对象是垃圾&#xff1f; JVM 垃圾回收Java8 中的 jvm如…

Google DeepMind: Many-Shot vs. Few-Shot

本文介绍了如何通过增大上下文窗口&#xff0c;利用大型语言模型&#xff08;LLMs&#xff09;进行多实例上下文学习&#xff08;Many-Shot In-Context Learning&#xff0c;ICL&#xff09;的方法。主要描述了现有的几实例上下文学习方法虽然在推理时能够通过少量例子学习&…