当前位置: 首页 > news >正文

Ubuntu配置Ngbatis学习环境

引言

经过考虑,我感觉与NebulaGraph交互的ORM框架还是Ngbatis好。因为现在这个框架开发的比较完善,而且还在不断更新,社区活跃的用户多。从今日开始学习,首先要配置一下环境。

1.安装maven和jdk

选择的版本是maven3.8和jdk17.以下是安装步骤:

#安装jdk17
sudo apt install openjdk-17-jdknano ~/.bashrc# 在文件末尾添加以下内容
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin#使得环境生效
source ~/.bashrc#验证
echo $JAVA_HOME
java -version


#2.安装maven3.8.8
wget https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz#-C后换成自己想安的路径  /opt只是个示例。
sudo tar -zxvf apache-maven-3.8.8-bin.tar.gz -C /opt#3.创建符号链接
sudo ln -s /opt/apache-maven-3.8.8 /opt/maven#4.配置环境变量
sudo nano /etc/profile.d/maven.sh#在文件添加以下内容
export M2_HOME=/opt/maven
export PATH=${M2_HOME}/bin:${PATH}#使得环境生效
source /etc/profile.d/maven.sh#5.验证是否安装成功
mvn -v

(1)接下来maven仓库设置一下,

settings.xml 文件中,添加或修改 localRepository 元素,例如:

<localRepository>/path/to/your/local/repo</localRepository>

运行以下命令验证Maven 是否使用了新的本地仓库路径

mvn help:evaluate -Dexpression=settings.localRepository

结果:

(2)设置国内阿里云镜像(160行附近)

<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>
</mirror>

(3)配置jdk17版本项目构建(260行附近)

<profile><id>jdk-17</id><activation><activeByDefault>true</activeByDefault><jdk>17</jdk></activation><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><maven.compiler.compilerVersion>17</maven.compiler.compilerVersion></properties>
</profile>

(4)IDEA配置本地Maven

我的Maven地址后来改成了/home/kg.IDEA我安装的是社区版。

2.Ngbatis具体环境配置

1.NebulaGraph 中创建的 Schema

要先进入控制台

#创建标签
CREATE tag `person` (`name` string NULL  , `gender` string NULL  , `age` int NULL  , `birthday` date NULL  
);#创建边类型
CREATE edge `like` (`likeness` double NULL  );-- 为查询创建索引
CREATE TAG INDEX `i_person_name_age` on `person`(`name`(50), `age`);
CREATE TAG INDEX `i_person_name` on `person`(`name`(50));#插入person节点数据
INSERT VERTEX person(name, gender, age, birthday) VALUES "1":("zhangsan", "男", 18, date("1999-02-02"));

2.后端配置

(1)先创建一个项目

groupId写错了,请改成com.ngbatis

(2)相关依赖包pom.xml

<?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 http://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>3.0.7</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.ngbatis</groupId><artifactId>Ngbatis</artifactId><version>1.0-SNAPSHOT</version><properties><java.version>17</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-undertow</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- Spring Boot Starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- Ngbatis --><dependency><groupId>org.nebula-contrib</groupId><artifactId>ngbatis</artifactId><version>1.2.2-jdk17</version></dependency><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version><scope>provided</scope></dependency><dependency><groupId>javax.persistence</groupId><artifactId>javax.persistence-api</artifactId><version>2.2</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

(3)项目配置(application.yaml)

我的NebulaGraph数据库放在另一台虚拟机上

# server配置
server:port: 8081servlet:context-path: /nebula:ngbatis:# ^v1.1.2# 连接使用 nebula-java 中的 SessionPoolsession-life-length: 300000check-fixed-rate: 300000use-session-pool: true# 填入 graphd 的 ip 和端口号,下面仅供参考hosts: 192.168.145.138:9669# 连接图数据库所用的用户名username: root# 连接图数据库所用的密码password: nebula# 所要连接的图数据库图空间名space: my_space# 连接池配置pool-config:# 连接池中最小空闲连接数min-conns-size: 0# 连接池中最大空闲连接数max-conns-size: 10# 客户端同服务端建立连接的超时时间设置,单位为 ms;超过设定时间未建立起连接,则报错timeout: 6000# 连接空闲时间,为 0 表示连接永不删除,单位为 msidle-time: 0# 连接池检测空闲连接的时间间隔,为 -1 表示不进行检测interval-idle: -1# 连接等候时间,超过则不再等候连接wait-time: 6000# 集群允许最小的服务可用率,1.0 表示为所有机器 graphd 可用,0.25 表示集群中 1/4 机器可用即可min-cluster-health-rate: 1.0# 是否允许 SSL 连接,目前暂不支持enable-ssl: true

(4)实体类Person

package com.ngbatis.entity;import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
import lombok.Data;@Data
@Table(name = "person")
public class Person {@Idprivate String name;/** use @Column to declare field's schema name in database */@Column(name = "gender")private String gender;private Integer age;private Date birthday;/** use @Transient to declare a field which is not exists in database */@Transientprivate String fieldDbNotExists;
}

(4)PersonDao

package com.ngbatis.mapper;import com.ngbatis.entity.Person;
import org.nebula.contrib.ngbatis.proxy.NebulaDaoBasic;import java.util.List;public interface PersonDao extends NebulaDaoBasic<Person, String> {public List<Person> selectAll();
}

(5)PersonDao.xml

<mapper namespace="com.ngbatis.mapper.PersonDao"><selcet id="selectAll" resultType="com.ngbatis.entity.Person">match (n:person) return n limit 10;</selcet>
</mapper>

(6)PersonController

package com.ngbatis.controller;import com.ngbatis.entity.Person;
import com.ngbatis.mapper.PersonDao;
import com.ngbatis.service.PersonService;
import com.ngbatis.service.impl.PersonServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.HashMap;
import java.util.List;@RestController
@RequestMapping("/person")
public class PersonController {@Autowiredprivate PersonDao personDao;@GetMapping("select")public HashMap<String, Object>  selectById() {List<Person> people = personDao.selectAll();System.out.println(people);return new HashMap<String, Object>() {{put("code", 200);}};}
}

(7)启动类(SpringbootApplication)

package com.ngbatis;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class },scanBasePackages = { "org.nebula.contrib.ngbatis", "com.ngbatis" }
)
public class SpringbootApplication {public static void main(String[] args) {SpringApplication.run(SpringbootApplication.class, args);}
}

3.结果

前两次还没插入数据

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++适配器
  • golang国内proxy设置
  • 【每日一题】【枚举】【估计时间复杂度】[蓝桥杯 2024 省 B] 好数 C++
  • 【Python 逆向滑块】(实战五)逆向滑块,并实现用Python+Node.js 生成滑块、识别滑块、验证滑块、发送短信
  • Java 设计模式之单例模式
  • 如何从智联招聘网站快速抓取职位详情?两大技巧揭秘
  • 【Linux修行路】进度条小程序
  • Java处理大数据的技巧
  • 使用VM安装K8S
  • 电路原理分析
  • 科普文:微服务之Spring Cloud Alibaba消息队列组件RocketMQ工作原理
  • 树模型详解3-xgboost
  • Elasticsearch的DSL查询,分组后排序,并查询组数量
  • 学工系统学生家庭情况登记功能概述
  • NET的全称、主要功能以及在计算机网络中的作用?
  • 78. Subsets
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • happypack两次报错的问题
  • Node 版本管理
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • Redis 懒删除(lazy free)简史
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • vue学习系列(二)vue-cli
  • 闭包,sync使用细节
  • 汉诺塔算法
  • 和 || 运算
  • 简单实现一个textarea自适应高度
  • 区块链将重新定义世界
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 双管齐下,VMware的容器新战略
  • 我是如何设计 Upload 上传组件的
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 在Unity中实现一个简单的消息管理器
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​Python 3 新特性:类型注解
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (javaweb)Http协议
  • (待修改)PyG安装步骤
  • (二)测试工具
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (含笔试题)深度解析数据在内存中的存储
  • (回溯) LeetCode 40. 组合总和II
  • (生成器)yield与(迭代器)generator
  • (转载)利用webkit抓取动态网页和链接
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .Net Core 笔试1
  • .net framework4与其client profile版本的区别