NebulaGraph学习笔记-NgBatis连接

2024-02-21 10:12

本文主要是介绍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的开发人员来说还是很容易上手的。

这篇关于NebulaGraph学习笔记-NgBatis连接的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/731421

相关文章

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

关于rpc长连接与短连接的思考记录

《关于rpc长连接与短连接的思考记录》文章总结了RPC项目中长连接和短连接的处理方式,包括RPC和HTTP的长连接与短连接的区别、TCP的保活机制、客户端与服务器的连接模式及其利弊分析,文章强调了在实... 目录rpc项目中的长连接与短连接的思考什么是rpc项目中的长连接和短连接与tcp和http的长连接短

Xshell远程连接失败以及解决方案

《Xshell远程连接失败以及解决方案》本文介绍了在Windows11家庭版和CentOS系统中解决Xshell无法连接远程服务器问题的步骤,在Windows11家庭版中,需要通过设置添加SSH功能并... 目录一.问题描述二.原因分析及解决办法2.1添加ssh功能2.2 在Windows中开启ssh服务2

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

Spring Boot实现多数据源连接和切换的解决方案

《SpringBoot实现多数据源连接和切换的解决方案》文章介绍了在SpringBoot中实现多数据源连接和切换的几种方案,并详细描述了一个使用AbstractRoutingDataSource的实... 目录前言一、多数据源配置与切换方案二、实现步骤总结前言在 Spring Boot 中实现多数据源连接

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接