构建基于 Spring Boot 的 GaussDB 数据访问应用:数据的增删改查
一、概述
1. 案例介绍
GaussDB 是华为自研的企业级分布式关系型数据库,具备强大的分布式事务能力、同城多可用区部署、数据零丢失保障、PB级存储扩展等特性。它支持高可用、高安全、弹性伸缩、一键部署、备份恢复和监控告警,适用于对性能、可靠性和扩展性有高要求的企业级应用场景。
通过实际操作,让大家快速掌握通过Web应用访问华为自研的GaussDB数据库,搭建自己的数据库应用。最终通过API访问的方式,对GaussDB数据库进行增删改查。
2. 适用对象
- 企业
- 个人开发者
- 高校学生
3. 案例时间
本案例总时长预计90分钟。
4. 案例流程

说明:
- 开发者免费领取GaussDB数据库;
- 绑定弹性公网IP并登录数据库;
- 创建Spring Boot项目并编写业务代码;
- 连接GaussDB数据库,通过API方式访问数据库。
5. 资源总览
本案例预计花费1元。
资源名称 | 规格 | 单价(元) | 时长(分钟) |
---|---|---|---|
华为开发者空间 - 云主机 | 鲲鹏通用计算增强型 kc2 | 4vCPUs | 8G | Ubuntu | 免费 | 90 |
GaussDB | gaussdb.opengauss.xe.dn.s6.xlarge.x864.ha|4 vCPUs | 16 GB | 免费 | 90 |
虚拟私有云VPC | 标配 | 免费 | 90 |
弹性公网IP | 按需计费 | 0.5元/小时 | 90 |
详细案例操作请阅读👉️👉️👉️构建基于 Spring Boot 的 GaussDB 数据访问应用:数据的增删改查
二、免费领取GaussDB在线使用版
1. 开发者空间配置
面向广大开发者群体,华为开发者空间提供一个随时访问的“开发桌面云主机”、丰富的“预配置工具集合”和灵活使用的“场景化资源池”,开发者开箱即用,快速体验华为根技术和资源。
如果还没有领取开发者空间云主机,可以参考免费领取云主机文档领取。
领取云主机后可以直接进入华为开发者空间工作台界面,点击打开云主机 > 进入桌面连接云主机。


2. 领取GaussDB数据库
打开火狐浏览器:

浏览器输入网址:
https://developer.huaweicloud.com/signup/75dae31d0eb04cdcab822c76d35eb9a1

点击立即报名,开发者完成报名且通过审核后,可前往开发者空间免费领取GaussDB实例,共1000个名额,先到先得。

报名成功且通过审核后,进入开发者空间工作台,有以下弹窗:

点击立即开通:

开通云数据库GaussDB,需要创建虚拟私有云,点击控制台:

创建虚拟私有云:

点击立即创建,再点击确定:

创建成功:

再次回到开通数据库界面,选择刚创建的虚拟私有云,输入管理员密码,确认密码:

点击开通后,点击立即前往:

数据库实例创建中:

数据库备份中:

数据库实例创建成功:

3. 绑定弹性公网IP
点击数据库实例名称:

进入云数据库GaussDB的基本信息界面:

点击绑定弹性公网IP:

点击查看弹性公网IP:

点击购买弹性公网IP:

选择按需计费:

点击立即购买,勾选《弹性公网IP服务声明》,点击提交按钮,购买成功后的截图如下:

回到数据库基本信息界面,再次点击绑定公网IP:

点击确定按钮:

绑定成功:

4. 登录数据库
回到云数据库控制台,登录数据库:

点击登录,再点击同意并继续:

输入密码,点击测试连接:

登录成功后,点击新建数据库:

输入数据库名称,指定兼容类型:

点击确定按钮,数据库创建成功:

点击SQL查询:

Schema选择public,执行以下SQL语句,创建表:
CREATE TABLE t_user (
id BIGSERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL
);

创建表成功:

三、构建SpringBoot项目,连接GaussDB
1. 创建SringBoot项目
打开开发工具IntelliJ IDEA,创建SpringBoot项目:
注意:IntelliJ IDEA的下载、安装配置,请开发者自行完成。
点击File->New Project,选择Spring Boot,输入项目名称、选择Java语言、构建类型选择Maven、JDK版本选择24:

点击Next:

勾选Dependencies:Spring Boot DevTools和Spring Web:

点击Create,创建项目:

等待项目构建完成,点击右上角运行按钮,运行项目:

2. 连接GaussDB数据库
在pom.xml中dependencies节点下添加数据库相关依赖:
<!-- postgresql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.4</version>
</dependency>
<!-- HikariCP 连接池 -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<!-- Spring Boot Starter Data JPA -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
添加依赖后,点击 Maven->Reload All Maven Projects,同步工程:

在application.properties文件中,添加GaussDB数据库配置:
spring.application.name=MineGaussDB
server.port=8000
spring.datasource.url=jdbc:postgresql://x.x.x.x:8000/MineGaussDB
spring.datasource.username=xxxx
spring.datasource.password=xxxx
spring.datasource.driver-class-name=org.postgresql.Driver
注意:
spring.datasource.url中的x.x.x.x,替换成数据库弹性公网IP地址;
spring.datasource.username中的xxxx,替换成数据库用户名;
spring.datasource.password中的xxxx,替换成数据库登录密码。
替换完成后,再次同步工程。
点击数据图标:

点击“+”图标,选择PostgreSQL:

输入Host、Port、User、Password、URL:

点击Test Connection:

数据库连接成功。
问题1:尝试连接已失败。

解决方案:
点击链接,回到数据库基本信息页面:
https://console.huaweicloud.com/gaussdb/?agencyId=675e761ca42b46cf96050bedc4d5868c®ion=cn-south-1&locale=zh-cn#/gaussdb/management/basicInfo/8e54d7dc50424d78b28982f9c2359e28in14?id=8e54d7dc50424d78b28982f9c2359e28in14
点击安全组:

点击入方向规则,添加以下规则:

问题2: Invalid or unsupported by client SCRAM mechanisms。
解决方案:
点击链接,回到数据参数管理界面:
https://console.huaweicloud.com/gaussdb/?agencyId=675e761ca42b46cf96050bedc4d5868c®ion=cn-south-1&locale=zh-cn#/gaussdb/management/paramTab/8e54d7dc50424d78b28982f9c2359e28in14
点击高风险参数,输入password_encryption_type搜索,将password_encryption_type的值改为1并保存。

回到数据库基本信息界面,点击重置密码:

注意:重置密码后,要重新登录数据库实例并在开发工具中重新配置密码。
问题3:重置密码后,登录报错:账号被锁定。

解决方案:
点击链接,回到数据参数管理界面:
https://console.huaweicloud.com/gaussdb/?agencyId=675e761ca42b46cf96050bedc4d5868c®ion=cn-south-1&locale=zh-cn#/gaussdb/management/paramTab/8e54d7dc50424d78b28982f9c2359e28in14
点击高风险参数,输入password_lock_time搜索,将password_lock_time的值改为0并保存。

输入failed_login_attempts搜索,将failed_login_attempts的值改为0并保存。

即可重新登录。
四、SpringBoot项目代码开发
本次开发,采用分层架构来组织代码,分层架构是保证代码可维护性、可扩展性和可测试性的关键。
1. Controller 层(表示层)
职责:处理 HTTP 请求和响应,路由请求到业务逻辑层。
注解:@RestController, @Controller, @RequestMapping, @GetMapping 等。
关键点:
- 接收请求参数(路径参数、查询参数、请求体)。
- 调用 Service 层处理业务逻辑。
- 返回响应(JSON/XML)或视图(如 Thymeleaf)。
完整代码:
package com.springboot.minegaussdb.controller;
import com.springboot.minegaussdb.model.User;
import com.springboot.minegaussdb.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@PostMapping
public User addUser(@RequestBody User user) {
return userService.createUser(user);
}
@GetMapping("/search")
public List<User> getUsers(@RequestParam String name) {
return userService.getUsersByName(name);
}
// 获取所有用户
@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}
}
2. Service 层(业务逻辑层)
职责:封装核心业务逻辑,处理事务管理。
注解:@Service, @Transactional。
关键点:
- 实现业务规则(如校验、计算、流程控制)。
- 调用 Repository 层操作数据。
- 使用 @Transactional 管理数据库事务。
完整代码:
package com.springboot.minegaussdb.service;
import com.springboot.minegaussdb.model.User;
import com.springboot.minegaussdb.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
// 创建用户
public User createUser(User user) {
return userRepository.save(user);
}
// 获取所有用户
public List<User> getAllUsers() {
return userRepository.findAll();
}
// 按名称查询用户
public List<User> getUsersByName(String name) {
return userRepository.findByName(name);
}
}
3. Repository / DAO 层(数据访问层)
职责:直接与数据库交互,执行 CRUD 操作。
注解:@Repository(可选,Spring 会自动扫描 JPA 接口)。
关键点:
- 使用 Spring Data JPA、MyBatis 等持久化框架。
- 定义数据库查询方法(如 findById(), save())。
完整代码:
package com.springboot.minegaussdb.repository;
import com.springboot.minegaussdb.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface UserRepository extends JpaRepository<User, Long> {
// 按名称查询
List<User> findByName(String name);
}
4. Model 层(实体层)
职责:映射数据库表结构,定义数据模型。
注解:@Entity, @Table, @Id, @Column 等。
关键点:
- 使用 JPA 注解描述表字段关系。
- 不应包含业务逻辑。
完整代码:
package com.springboot.minegaussdb.model;
import jakarta.persistence.*;
@Entity
@Table(name = "t_user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, length = 100)
private String name;
@Column(nullable = false, length = 100, unique = true)
private String email;
// 构造方法
public User() {}
public User(String name, String email) {
this.name = name;
this.email = email;
}
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
'}';
}
}
五、本地部署Spring Boot项目并验证
1. 运行部署项目
点击右上角运行按钮,运行项目:

2. 验证项目
谷歌浏览器安装Talend API Tester插件:

添加用户:
使用post请求,向数据库中添加用户:http://localhost:8000/api/users

点击Send按钮:

接口返回成功!
再添加2个用户:
{"name": "李四", "email": "李四@example.com"}
{"name": "王五", "email": "wangwu@example.com"}
查询用户:
使用get请求,查询所有用户:http://localhost:8000/api/users

点击Send按钮,接口返回所有的用户:

SQL查询验证:
登录GaussDB数据库,点击SOL查询:

执行SQL查询语句,查询数据表中的数据:

添加用户和查询用户的功能已经完成,开发者可以在此基础上增加查询用户和删除用户的功能。
六、释放资源
1. 删除虚拟私有云VPC
进入虚拟私有云控制台,点击全选按钮,点击“删除”,会弹出关联资源列表的对话框,删除子网和弹性公网IP
2. 删除弹性公网IP EIP
进入弹性公网IP控制台,首先解绑弹性公网IP,然后删除。
3. 删除GaussDB数据库实例
进入GaussDB控制台,点击“更多 -> 删除实例”。

注意:删除的实例会被移至回收站,但达到回收站策略设置的天数后,该实例会被永久删除,请谨慎操作。
至此,构建基于 Spring Boot 的 GuassDB 数据访问应用:数据的增删改查案例已全部完成。
七、反馈改进建议
如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!
更多推荐
所有评论(0)