NgBatis 使用教程
2024-08-17 05:52:57作者:廉皓灿Ida
项目介绍
NgBatis 是一款针对 NebulaGraph + Springboot 的数据库 ORM 框架,借鉴于 MyBatis 的使用习惯进行开发。它包含了一些类似于 mybatis-plus 的单表操作,另外还有一些图特有的实体-关系基本操作。NgBatis 旨在简化 NebulaGraph 数据库与 Springboot 应用的集成,使得开发者能够更高效地进行图数据库的开发工作。
项目快速启动
环境准备
- Java 8 或更高版本
- Maven 3.6 或更高版本
- NebulaGraph 数据库
- Springboot 2.x
快速启动步骤
-
克隆项目
git clone https://github.com/nebula-contrib/ngbatis.git cd ngbatis -
添加依赖
在您的 Springboot 项目的
pom.xml文件中添加以下依赖:<dependency> <groupId>io.github.nebula-contrib</groupId> <artifactId>ngbatis</artifactId> <version>1.2.2</version> </dependency> -
配置数据库连接
在
application.properties文件中添加 NebulaGraph 数据库的连接配置:nebula.graph.address=127.0.0.1:9669 nebula.graph.username=root nebula.graph.password=nebula -
创建实体类和 Mapper
创建一个简单的实体类:
public class Person { private String id; private String name; // 省略 getter 和 setter 方法 }创建一个 Mapper 接口:
@Mapper public interface PersonMapper { @Select("MATCH (p:Person) RETURN p") List<Person> selectAll(); } -
使用 Mapper
在您的服务类中注入并使用 Mapper:
@Service public class PersonService { @Autowired private PersonMapper personMapper; public List<Person> getAllPersons() { return personMapper.selectAll(); } }
应用案例和最佳实践
应用案例
NgBatis 可以用于各种图数据库应用场景,例如社交网络分析、推荐系统、知识图谱等。以下是一个简单的社交网络分析案例:
-
定义社交网络实体和关系
public class User { private String id; private String name; // 省略 getter 和 setter 方法 } public class Follow { private String from; private String to; // 省略 getter 和 setter 方法 } -
定义 Mapper
@Mapper public interface UserMapper { @Select("MATCH (u:User) RETURN u") List<User> selectAllUsers(); @Select("MATCH (u:User)-[:FOLLOWS]->(f:User) WHERE id(u) = #{userId} RETURN f") List<User> selectFollowers(String userId); } -
使用 Mapper
@Service public class SocialNetworkService { @Autowired private UserMapper userMapper; public List<User> getAllUsers() { return userMapper.selectAllUsers(); } public List<User> getFollowers(String userId) { return userMapper.selectFollowers(userId); } }
最佳实践
- 合理设计实体和关系:确保实体和关系的设计符合业务需求,避免过度设计。
- 使用缓存:对于频繁查询的数据,可以考虑使用缓存机制提高性能。
- 优化查询语句:合理编写 NebulaGraph 查询语句,避免全表扫描,提高查询效率。
典型生态项目
NgBatis 作为 NebulaGraph 开源生态项目之一,与其他 NebulaGraph 相关项目协同工作,共同构建
登录后查看全文
热门项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0134- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
MiniCPM-V-4.6这是 MiniCPM-V 系列有史以来效率与性能平衡最佳的模型。它以仅 1.3B 的参数规模,实现了性能与效率的双重突破,在全球同尺寸模型中登顶,全面超越了阿里 Qwen3.5-0.8B 与谷歌 Gemma4-E2B-it。Jinja00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00
MusicFreeDesktop插件化、定制化、无广告的免费音乐播放器TypeScript00
项目优选
收起
暂无描述
Dockerfile
725
4.66 K
Ascend Extension for PyTorch
Python
597
749
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
425
376
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
992
984
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed.
Get Started
Rust
924
134
昇腾LLM分布式训练框架
Python
160
188
暂无简介
Dart
968
246
deepin linux kernel
C
29
16
Oohos_react_native
React Native鸿蒙化仓库
C++
345
393
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.65 K
971