暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

使用openGauss进行项目开发

原创 土豆虫 2023-08-03
1268

一:Docker安装openGauss

1.下载openGauss

安装好Docker好以后,执行如下命令下载openGauss3.0镜像。

docker pull enmotech/opengauss:3.0.0

image.png

2.运行openGauss

执行如下命令

docker run -itd --name opengauss \
--restart=always \
--privileged=true \
-e GS_PASSWORD=OpenGauss@123 \
-v /home/opengauss:/var/lib/opengauss \
-u root \
-p 5432:5432 \
enmotech/opengauss:3.0.0

image.png

二:使用openGauss

1.创建用户

安装好openGauss后会自动创建一个默认用户omm,但是该用户不能用于远程连接,必须创建一个新用户,用于数据连接。

1.进入容器

docker exec -it opengauss /bin/bash

2.切换omm用户

su omm

3.连接数据库

gsql -d postgres -p 5432

image.png

4.创建新用户

CREATE USER gauss WITH Sysadmin IDENTIFIED BY 'OpenGauss@123';

image.png

执行上述命令后将在postgres下创建用户gauss。

5.给用户授权

GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA public TO gauss; GRANT USAGE,SELECT ON ALL SEQUENCES IN SCHEMA gauss TO gauss;

image.png
6.切换用户

openGauss=# \c - gauss

image.png

注意:输入命令后需要输入密码,密码为前面设置的“OpenGauss@123”,且密码不显示。

2.创建数据库

1.创建my_db数据库

CREATE DATABASE my_db;

2.查看数据库

openGauss=> \l

image.png

3.使用Data Studio连接openGauss

1.下载安装

可以到openGauss官网下载安装Data Studio进行使用(注意版本对应)。

image.png

2.连接数据库

打开Data Studio后输入连接信息(注意自己的主机号)

名称:mygauss-conn
主机名:192.168.108.200
端口号:5432
数据库:postgres
用户名:ga_mason
密码:OpenGauss@123

image.png

连接成功后跳转至如下界面,可以查看创建表。

image.png

三:项目实战

1.创建表

创建如下tbl_book表

image.png

image.png

image.png

2.创建项目

1.创建如下SpringBoot项目结构

image.png

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 https://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>2.7.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.my</groupId> <artifactId>openGaussPro</artifactId> <version>0.0.1-SNAPSHOT</version> <name>openGaussPro</name> <description>openGaussPro</description> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.5.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>

②application.yml

spring: datasource: # config mysql url: jdbc:postgresql://192.168.132.128:5432/my_db username: gauss password: OpenGauss@123 driver-class-name: org.postgresql.Driver

③Book.java

package com.my.pojo; public class Book { private String id; private String type; private String name; private String description; @Override public String toString() { return "Book{" + "id=" + id + ", type='" + type + '\'' + ", name='" + name + '\'' + ", description='" + description + '\'' + '}'; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }

④BookController.java

package com.my.controller; import com.my.common.Code; import com.my.common.Result; import com.my.exception.BusinessException; import com.my.pojo.Book; import com.my.service.BookService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.UUID; @RestController @RequestMapping("/books") public class BookController { @Autowired private BookService bookService; @PostMapping public Result save(@RequestBody Book book) { book.setId(UUID.randomUUID().toString()); boolean flag = bookService.save(book); return new Result(flag? Code.SAVE_OK:Code.SAVE_ERR,flag); } @PutMapping public Result update(@RequestBody Book book) { boolean flag = bookService.update(book); return new Result(flag?Code.UPDATE_OK:Code.SAVE_ERR,flag); } @DeleteMapping("/{id}") public Result delete(@PathVariable Integer id) { boolean flag = bookService.delete(id); return new Result(flag?Code.DELETE_OK:Code.DELETE_ERR,flag); } @GetMapping public Result getAll() { List<Book> bookList = bookService.getAll(); Integer code = (bookList == null ? Code.GET_ERR:Code.GET_OK); String msg = (bookList == null? "数据查询失败!":""); return new Result(code,bookList,msg); } @GetMapping(value = ("/getByName")) public Result getByName(@RequestParam("name") String name){ List<Book> bookList = bookService.getByName(name); Integer code = (bookList == null ? Code.GET_ERR:Code.GET_OK); String msg = (bookList == null? "系统繁忙,请稍后再试!":""); return new Result(code,bookList,msg); } }

⑤BookDao.java

package com.my.dao; import com.my.pojo.Book; import org.apache.ibatis.annotations.*; import java.util.List; @Mapper public interface BookDao { @Insert("insert into tbl_book values(#{id},#{type},#{name},#{description})") int save(Book book); @Update("update tbl_book set type = #{type}, name = #{name}, description = #{description} where id = #{id}") int update(Book book); @Delete("delete from tbl_book where id = #{id}") int delete(Integer id); @Select("select * from tbl_book") List<Book> getAll(); @Select("select * from tbl_book where name like concat('%',#{name},'%')") List<Book> selectByName(String name); }

⑥BookServiceImpl.java

package com.my.service.impl; import com.my.dao.BookDao; import com.my.pojo.Book; import com.my.service.BookService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class BookServiceImpl implements BookService { @Autowired private BookDao bookDao; @Override public boolean save(Book book) { return bookDao.save(book) > 0; } @Override public boolean update(Book book) { return bookDao.update(book) > 0; } @Override public boolean delete(Integer id) { return bookDao.delete(id) > 0; } @Override public List<Book> getAll() { return bookDao.getAll(); } @Override public List<Book> getByName(String name) { return bookDao.selectByName(name); } }

3.项目运行

点击OpenGaussProApplication.java并运行main方法,浏览器输入

localhost:8080/pages/books.html

image.png

进入主界面以后可以进行图书的增删改查操作,下面演示图书的增加,点击“新建”按钮,输入图书信息点击确定

image.png

显示图书添加成功

image.png

数据库中也可查询到该条数据

image.png

四:总结

平时做项目用的都是MySQL较多,今天尝试了一下将openGauss作为数据库进行项目的数据存储,总的体验效果感觉还不错,包括存储速度以及连接简易性等,如果已经在电脑中配置好了openGauss环境,完全可以考虑将openGauss作为项目数据库来使用。但是不足的地方在于openGauss只支持在Linux进行安装,而平时我们使用最多的是Windows系统,所以对于个人用户来说使用不是那么方便,另外openGauss的连接工具Data Studio的功能也不够完善,可以对照Navicat进行改进,相信这样能更好提升使用体验。

最后修改时间:2023-11-30 22:57:02
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论