springboot 连接 XuguDB 示例程序
📄字数 3.2K
👁️阅读量 加载中...
本文档将介绍如何使用 springboot v3.3.2 在 spring-boot-web 应用中连接 XuguDB。
提示
官方文档
示例代码下载SpringBoot-Demo
一、导入 xugu-springboot-demo 项目到到IDEA中
项目结构如下:

1.1 修改配置文件
修改配置文件中如下图所示的连接信息:

1.2 执行测试操作
打开测试类UserRepositoryJdbcTest.java.配置文件中添加了自动初始化配置,当项目启动时,会自动执行数据库初始化脚本到配置的对应数据库中。

1.3 查看测试结果
测试结果如下:

查看数据库结果如下:

二、项目代码介绍
2.1 pom.xml
配置文件内容如下
2.1.1 构建属性
xml
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<maven.compiler.source>
和<maven.compiler.target>
:指定 Java 编译器的源代码和目标字节码版本为 Java 17。<project.build.sourceEncoding>
:设置项目的默认编码为 UTF-8。
2.1.2 父项目依赖
xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.2</version>
<relativePath/>
</parent>
<parent>
:定义了当前项目的父项目。spring-boot-starter-parent
是 Spring Boot 提供的一个基础父项目,它预配置了许多常用的 Maven 插件和依赖管理规则,简化了 Spring Boot 应用的构建过程。<relativePath/>
:表示不从本地查找父项目的路径,而是从远程仓库获取。
2.1.3 依赖项 (Dependencies)
2.1.3.1 Spring Boot Starter JDBC
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
- 作用:提供对 Spring Boot 中 JDBC 的支持,包含数据库连接池、事务管理等基础功能。
2.1.3.2 Spring Boot Starter
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
- 作用:这是 Spring Boot 的核心启动器,包含了自动配置、日志记录、嵌入式服务器等功能的基础依赖。
2.1.3.3 Spring Boot Starter Test
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
- 作用:提供测试 Spring Boot 应用所需的库,如 JUnit、Mockito 等。
<scope>test</scope>
:表示此依赖仅在测试阶段生效。
2.1.3.4 Xugu JDBC 驱动
xml
<dependency>
<groupId>com.xugudb</groupId>
<artifactId>xugu-jdbc</artifactId>
<version>12.3.4</version>
</dependency>
- 作用:引入 Xugu 数据库的 JDBC 驱动程序,用于与 Xugu 数据库进行交互。
2.2 application.properties
文件
2.2.1 服务器配置
指定应用启动时使用的端口号。当前配置为 9090
,表示应用将在 http://localhost:9090
上运行。
yaml
server:
port: 9090
2.2.2 数据库连接配置(Spring Datasource)
yaml
spring:
datasource:
driver-class-name: com.xugu.cloudjdbc.Driver
url: jdbc:xugu://localhost:5138/SYSTEM?current_schema=test
username: SYSDBA
password: SYSDBA
配置项 | 值 | 说明 |
---|---|---|
driver-class-name | com.xugu.cloudjdbc.Driver | Xugu 数据库的 JDBC 驱动类名 |
url | jdbc:xugu://localhost:5138/SYSTEM?current_schema=test | 数据库连接 URL,指向本地主机上的 Xugu 数据库实例 |
username | SYSDBA | 数据库用户名 |
password | SYSDBA | 数据库用户密码 |
提示
确保 XuguDB 服务已启动,并且可以通过上述 URL 和凭据访问。
2.2.3 SQL 初始化配置
在应用启动时自动执行 schema.sql
文件中的 SQL 脚本,用于创建表结构或插入初始数据。
yaml
sql:
init:
mode: always
schema-locations: classpath:schema.sql
配置项 | 值 | 说明 |
---|---|---|
mode | always | 表示每次启动应用时都会执行初始化脚本 |
schema-locations | classpath:schema.sql | 指定数据库结构初始化脚本的位置(位于 src/main/resources/schema.sql ) |
2.3 UserRepository.java
2.3.1 创建用户 save(User user)
java
public User save(User user) {
String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(connection -> {
PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, user.getName());
ps.setString(2, user.getEmail());
return ps;
}, keyHolder);
user.setId(keyHolder.getKey().longValue());
return user;
}
- 功能:将
User
实体插入到数据库中。 - SQL 语句:
INSERT INTO users (name, email) VALUES (?, ?)
- 返回主键:使用
KeyHolder
获取插入后生成的主键 ID,并赋值给user.setId()
。 - 预编译语句:防止 SQL 注入,提升性能。
2.3.2 按 ID 查找用户 findById(Long id)
java
public Optional<User> findById(Long id) {
String sql = "SELECT * FROM users WHERE id = ?";
try {
User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(User.class), id);
return Optional.ofNullable(user);
} catch (Exception e) {
return Optional.empty();
}
}
- 功能:根据用户 ID 查询用户信息。
- SQL 语句:
SELECT * FROM users WHERE id = ?
- 结果映射:使用
BeanPropertyRowMapper
映射查询结果到User
- 异常处理:若无匹配记录或发生异常,返回空的
Optional
。
2.3.3 查询所有用户 findAll()
java
public List<User> findAll() {
String sql = "SELECT * FROM users";
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
}
- 功能:获取所有用户列表。
- SQL 语句:
SELECT * FROM users
- 结果类型:返回
List<User>
,表示多个用户对象。
2.3.4 更新用户 update(User user)
java
public void update(User user) {
String sql = "UPDATE users SET name = ?, email = ? WHERE id = ?";
jdbcTemplate.update(sql, user.getName(), user.getEmail(), user.getId());
}
- 功能:更新已有用户的姓名和邮箱。
- SQL 语句:
UPDATE users SET name = ?, email = ? WHERE id = ?
- 参数绑定:自动将
user.getName()
、user.getEmail()
和user.getId()
绑定到 SQL 中。
2.3.5 删除用户 deleteById(Long id)
java
public void deleteById(Long id) {
String sql = "DELETE FROM users WHERE id = ?";
jdbcTemplate.update(sql, id);
}
- 功能:根据用户 ID 删除用户。
- SQL 语句:
DELETE FROM users WHERE id = ?
三、常见问题&解决办法
- Spring Boot 3.3.2 的最低 JDK 要求是
JDK 17
。