Ubuntu配置Ngbatis学习环境
创始人
2024-11-13 23:08:38

引言

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

1.安装maven和jdk

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

#安装jdk17 sudo apt install openjdk-17-jdk  nano ~/.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 元素,例如:

   /path/to/your/local/repo   

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

mvn help:evaluate -Dexpression=settings.localRepository 

结果:

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

     alimaven     aliyun maven     http://maven.aliyun.com/nexus/content/groups/public/     central 

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

     jdk-17            true       17                 17       17       17      

(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

      4.0.0               org.springframework.boot         spring-boot-starter-parent         3.0.7                     com.ngbatis     Ngbatis     1.0-SNAPSHOT               17         UTF-8                                   org.springframework.boot             spring-boot-starter-web                                                   org.springframework.boot                     spring-boot-starter-tomcat                                                               org.springframework.boot             spring-boot-starter-undertow                                org.springframework.boot             spring-boot-starter-test             test                                          org.springframework.boot             spring-boot-starter                                          org.nebula-contrib             ngbatis             1.2.2-jdk17                                         org.projectlombok             lombok             1.18.30             provided                                javax.persistence             javax.persistence-api             2.2                                                            org.springframework.boot                 spring-boot-maven-plugin                             

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

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

# server配置 server:   port: 8081   servlet:     context-path: /  nebula:   ngbatis:     # ^v1.1.2     # 连接使用 nebula-java 中的 SessionPool     session-life-length: 300000     check-fixed-rate: 300000     use-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 表示连接永不删除,单位为 ms     idle-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 {     @Id     private 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 */     @Transient     private 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 {      public List selectAll(); } 

(5)PersonDao.xml

               match (n:person) return n limit 10;      

(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 {          @Autowired     private PersonDao personDao;       @GetMapping("select")     public HashMap  selectById() {         List people = personDao.selectAll();         System.out.println(people);         return new HashMap() {{             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.结果

前两次还没插入数据

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...