NebulaGraph学习笔记-NgBatis连接

最近项目需要连接NebulaGraph图数据库获取部分数据,于是查看了一些相关资料,发现一个NgBatis框架。

NgBatis是一个使用类似MyBatis+MyBatis-Plus的方式操作NebulaGraph的JavaORM框架。同时NgBatis也是一款针对NebulaGraph+SpringBoot的数据库ORM框架。借鉴于MyBatis的使用习惯进行开发,当中包含了部分类似于mybatis-plus的单表操作。另外还有部分图特有的实体-关系基本操作。具体的可以点击查看官方文档。

NgBatis连接
  • 相关依赖包
<!-- SpringBoot依赖包 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId>
</dependency><!-- Client依赖包 -->
<dependency><groupId>com.vesoft</groupId><artifactId>client</artifactId><version>3.6.1</version>
</dependency><dependency><groupId>org.nebula-contrib</groupId><artifactId>ngbatis</artifactId><version>1.2.0</version><exclusions><exclusion><groupId>com.vesoft</groupId><artifactId>client</artifactId></exclusion></exclusions>
</dependency>
  • 项目引入配置
# https://github.com/nebula-contrib/ngbatis
nebula:ngbatis:session-life-length: 300000 # since v1.1.2check-fixed-rate: 300000 # since v1.1.2# space name needs to be informed through annotations(@Space) or xml(space="test")# default false(false: Session pool map will not be initialized)use-session-pool: false # since v1.1.2hosts: 127.0.0.1:19669, 127.0.0.1:9669username: rootpassword: nebulaspace: testpool-config:min-conns-size: 0max-conns-size: 10timeout: 6000idle-time: 0interval-idle: -1wait-time: 6000min-cluster-health-rate: 1.0enable-ssl: false
  • 部分参考代码
@SpringBootApplication
@ComponentScan(basePackages = { "org.nebula.contrib" })
public class NebulaGraphApplication {}
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import javax.persistence.Id;
import javax.persistence.Table;@Data
@Table(name = "player_with_default")
@NoArgsConstructor
@AllArgsConstructor
public class PlayerWithDefaultPO {@Idprivate String name;private Integer age;public PlayerWithDefaultPO(String name) {this.name = name;}}
import org.nebula.contrib.ngbatis.proxy.NebulaDaoBasic;
import org.springframework.data.repository.query.Param;import java.util.List;
import java.util.Map;public interface PlayerWithDefaultDAO extends NebulaDaoBasic<PlayerWithDefaultPO, String> {Integer returnAge(PlayerWithDefaultPO playerWithDefaultPO);PlayerWithDefaultPO selectOne(@Param("name") String name);List<PlayerWithDefaultPO> selectAgeGt(Integer age);List<PlayerWithDefaultPO> selectNameAndAgeGt(String name, Integer age);List<PlayerWithDefaultPO> selectList();List<String> selectListString();List<Map> selectListMap();Map<String, Object> selectMap();}
<mapper namespace="com.dao.PlayerWithDefaultDAO"><!-- new features from v1.2.0 start --><nGQL id="include-player-value">${playerWithDefaultPO}</nGQL><nGQL id="ngql-return-age">RETURN @ng.include('include-player-value',{'playerWithDefaultPO':age});</nGQL><!--The same as:RETURN ${person.age};You can try extracting more common and meaningful scripts.--><select id="returnAge" resultType="java.lang.Integer">@ng.include('ngql-return-age',playerWithDefaultPO);</select><select id="selectOne" resultType="com.domain.po.PlayerWithDefaultPO">MATCH (v:player_with_default) WHERE id(v) == $name return v limit 1</select><select id="selectAgeGt" resultType="com.domain.po.PlayerWithDefaultPO">MATCH (n:player_with_default)WHERE n.player_with_default.age > $p0RETURN nLIMIT 100</select><select id="selectNameAndAgeGt" resultType="com.domain.po.PlayerWithDefaultPO">MATCH (n:player_with_default)WHERE id(n) == $p0 AND n.player_with_default.age > $p1RETURN nLIMIT 100</select><select id="selectList" resultType="com.domain.po.PlayerWithDefaultPO">MATCH (v:player_with_default) RETURN v LIMIT 100</select><select id="selectListString" resultType="java.lang.String">MATCH (v:player_with_default) RETURN id(v) as name LIMIT 100</select><select id="selectListMap" resultType="java.util.Map">MATCH (v:player_with_default) RETURN id(v) as name, v.player_with_default.age as age LIMIT 100</select><select id="selectMap" resultType="java.util.Map">MATCH (n: player_with_default)-[r: like]->(n2: player_with_default)RETURN n, r, n2LIMIT 100</select></mapper>
总体来说,对于习惯使用MyBatis或者MyBatis-Plus的开发人员来说还是很容易上手的。

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

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

相关文章

5G——物理层仿真

1.前置条件 2.仿真流程 1.填写搜索过程 解&#xff1a; 2.填写每一步细节 2.2.1 准备 解&#xff1a; &#xff08;1&#xff09;BCH &#xff08;2&#xff09;BCCH 解析&#xff1a;因为PBCH是物理广播信道&#xff0c;BCCH是用于广播系统控制信息的下行信道&#…

Facebook元宇宙探索:虚拟社交的新时代

在数字化时代的浪潮中&#xff0c;人类社交的模式和形式正在经历着翻天覆地的变化。而当下&#xff0c;Facebook作为全球最大的社交媒体平台之一&#xff0c;正积极探索着元宇宙的未来。元宇宙被认为是虚拟世界的下一步进化&#xff0c;它将重新定义人们的社交方式、娱乐体验以…

【Python】OpenCV-图片添加水印处理

图片添加水印处理 1. 引言 图像处理中的水印添加是一种常见的操作&#xff0c;用于在图片上叠加一些信息或标识。本文将介绍如何使用OpenCV库在图片上添加水印&#xff0c;并通过详细的代码注释来解释每一步的操作。 2. 代码示例 以下是一个使用OpenCV库的简单代码示例&…

根据地图级别计算地图分辨率分母值

根据地图级别计算地图分辨率分母值 def zoom_to_scale_denom(zoom):# epsg3857 epsg900913# https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Resolution_and_Scalemap_width_in_metres 40075016.68557849 # 地球周长&#xff0c;赤道长度tile_width_in_pixels…

【Java】Ruoyi-Vue-Plus 整合 文件分片上传至 minio、阿里云、七牛云等OSS-【后端篇】

开发环境 Ruoyi-Vue-Plus 5.1.2(Spring Boot 3.1.7)MySQL 8.0.32minioopen JDK 17common-oss 模块添加相关封装类 entity ChunkFileInfoBO package org.dromara.common.oss.chunkfile.entity;import jakarta.validation.constraints.NotEmpty; import jakarta.validation.…

Spring6学习技术|IoC+基于xml管理bean

学习材料 尚硅谷Spring零基础入门到进阶&#xff0c;一套搞定spring6全套视频教程&#xff08;源码级讲解&#xff09; IoC 控制反转。是一种设计思想。 1.获取bean对象的方法 通过id&#xff0c;通过class&#xff0c;和双重方式。 ApplicationContext context new Cla…

IDEA打开已有vue项目

在idea中打开已有的vue项目 1. Idea安装Vue.js插件&#xff08;若已安装此步骤可以忽略&#xff09; 在idea中&#xff0c;file–>settings–>plugins&#xff0c;搜索vue&#xff0c;找到Vue.js插件&#xff0c;点击install即可&#xff0c;安装后重启一下idea即可生效…

Unity2023.1.19_ShaderGraph节点说明以及使用技巧

Unity2023.1.19_ShaderGraph节点说明以及使用技巧 目录 Unity2023.1.19_ShaderGraph节点说明以及使用技巧 1. 快捷键CtrlG完成和UE蓝图使用快捷键C一样的蓝图分组注释效果&#xff1a; 2. Tiling And Offset&#xff1a; 3. 以下是两组URP材质渲染的效果对比&#xff1a; 4…

android之Cordova 5.3.1 Android 应用无法上网

我正在尝试在 android 上部署一个非常简单的 cordova 应用程序。它应该启动&#xff0c;然后通过角度 $http 拉入国家列表并显示它们。 由于某些原因它无法访问互联网&#xff0c;为了简化测试&#xff0c;我添加了一个图像标签来显示网络上的图像。图片也不显示。 我也无法连…

ADO.NET+Redis 实现分布式锁实例

使用 ADO.NET 和 Redis 来实现分布式锁是一个常见的做法&#xff0c;但需要注意的是&#xff0c;ADO.NET 本身并不直接支持分布式锁的实现。ADO.NET 主要用于数据库操作&#xff0c;而 Redis 则是一个内存中的数据结构存储系统&#xff0c;它提供了像分布式锁这样的高级功能。 …

Vue 全组件 局部组件

一、组件定义和使用 1、全局组件 定义 <template> <div> <h1>This is a global component</h1> </div> </template> <script lang"ts"> </script> <style></style> 导入 全局组件在main.ts&#xff…

【C语言必刷题】5.判断闰年

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有…

智慧公厕是什么?智慧公厕对智慧城市的意义

城市的信息化发展需要催化了智慧城市&#xff0c;公共厕所作为城市的重要民生设施&#xff0c;如何实现更高阶的信息化建设&#xff0c;成为一个重要课题。那么&#xff0c;智慧公厕是什么&#xff1f;为什么它对智慧城市的建设如此重要&#xff1f;本文以智慧公厕源头厂家广州…

QT编写工具基本流程(自用)

以后有人让你写工具的时候&#xff0c;可以方便用这个模版及时提高工作效率&#xff0c;可以争取早点下班。包含库目录&#xff0c;头文件目录&#xff0c;输出目录以及翻译和部署&#xff0c;基本上都全了&#xff0c;也可以做收藏用用。 文章目录 1、创建项目Dialog Widget都…

航空领域中气象常识笔记

前言 由于现在我涉及的项目都是跟气象有关&#xff0c;所以我现在要学习和积累一些气象中的名词和常识&#xff0c;以下为在开发航空领域系统过程中我认为重要的一些知识点记录。 名词解释 强对流天气&#xff1a; 在气象学上&#xff0c;强对流天气指的是一种发生与消失突然…

C++函数重载与编译链接

前言 C支持函数重载&#xff0c;C语言不支持函数重载&#xff0c;它们的区别在于编译器对函数编译的实现不一样。 编译链接 要想明白这个问题&#xff0c;我们首先来简单认识一下编译链接。我们平时写的C&#xff0c;C代码都是需要通过编译链接生成可执行文件的。 为什么需要编…

PNPM 批量检查和更新项目依赖

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

LPC/LSP/LSF辨析

我们在阅读语音或者数字信号处理的论文书籍时经常会遇到LPC,LSF和LSP这些和线性预测相关的名词,刚接触时容易一头雾水,今天我们就介绍下它们之间的关系。 LPC/LSP/LSF 线性预测编码(Linear Predictive coding ,LPC),是一种用于语音信号压缩和分析的方法。在LPC模型中,…

18个惊艳的可视化大屏(第三辑),各行业都有。

2023-04-28 22:35贝格前端工场 本次分享第二辑&#xff0c;请大家慢慢欣赏。

Swift基础知识:18.Swift类

在 Swift 中&#xff0c;类&#xff08;Class&#xff09;是一种用来创建具有共同属性和方法的对象的蓝图。与结构体&#xff08;Structures&#xff09;不同&#xff0c;类是引用类型&#xff0c;它在传递和赋值时是共享同一份数据。类具有面向对象编程的特性&#xff0c;包括…