【RuoYi-SpringBoot3-Pro】:多数据库支持,再也不用为数据库选型烦恼了
在企业级应用开发中,数据库选型往往受到多种因素影响:成本预算、技术栈偏好、国产化要求、性能需求等。 RuoYi-SpringBoot3-Pro 框架对原 RuoYi-Vue 进行了升级和增强,让开发者可以根据实际场景灵活选择数据库。
GitHub:
https://github.com/undsky/RuoYi-SpringBoot3-Pro
支持的数据库
| 数据库 | 版本要求 | 开发配置 | 生产配置 | 初始化脚本 |
|---|---|---|---|---|
| MySQL | 5.7+ | application-devmy.yml | application-prodmy.yml | ruoyi-mysql.sql |
| PostgreSQL | 12+ | application-devpg.yml | application-prodpg.yml | ruoyi-pgsql.sql |
| 达梦数据库 | DM8+ | application-devdm.yml | application-proddm.yml | ruoyi-dm8.dmp |
| 瀚高数据库 | 6.2+ | application-devhg.yml | application-prodhg.yml | ruoyi-highgo.sql |
| 高斯数据库 | GaussDB | application-devgs.yml | application-prodgs.yml | ruoyi-gauss.sql |
快速切换数据库
切换数据库只需修改 application.yml 中的 spring.profiles.active 配置:
yaml
spring:
profiles:
active: devpg # 可选值: devmy, devpg, devdm, devhg, devgs
各数据库配置详解
MySQL 配置
MySQL 是最常用的关系型数据库,配置相对简单:
yaml
spring:
datasource:
driverClassName: com.mysql.cj.jdbc.Driver
druid:
master:
url: jdbc:mysql://localhost:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: ruoyi
password: your_password
validationQuery: SELECT 1 FROM DUAL
pagehelper:
helperDialect: mysql
特点:
- 使用
AUTO_INCREMENT实现主键自增 - 连接验证语句:
SELECT 1 FROM DUAL - PageHelper 方言:
mysql
PostgreSQL 配置
PostgreSQL 是功能强大的开源数据库,支持丰富的数据类型和扩展:
yaml
spring:
datasource:
driverClassName: org.postgresql.Driver
druid:
master:
url: jdbc:postgresql://localhost:5432/ruoyi?currentSchema=ruoyi
username: ruoyi
password: your_password
validationQuery: SELECT version()
pagehelper:
helperDialect: postgresql
reasonable: true
特点:
- 使用
SEQUENCE序列实现主键自增 - 支持 Schema 隔离(
currentSchema=ruoyi) - 连接验证语句:
SELECT version() - PageHelper 方言:
postgresql
序列配置示例:
sql
CREATE SEQUENCE "ruoyi"."sys_user_user_id_seq"
INCREMENT 1
MINVALUE 10
START 10
CACHE 10;
达梦数据库配置
达梦数据库是国产数据库的代表,广泛应用于政务、金融等领域:
yaml
spring:
datasource:
driverClassName: dm.jdbc.driver.DmDriver
druid:
master:
url: jdbc:dm://localhost:5236?schema=RUOYI
username: ruoyi
password: your_password
validationQuery: SELECT 1 FROM DUAL
pagehelper:
helperDialect: oracle # 达梦兼容 Oracle 语法
特点:
- 高度兼容 Oracle 语法
- 使用 Schema 进行数据隔离
- PageHelper 方言:
oracle - 初始化使用
.dmp导入文件
瀚高数据库配置
瀚高数据库基于 PostgreSQL 内核,是国产化替代的优选方案:
yaml
spring:
datasource:
driverClassName: com.highgo.jdbc.Driver
druid:
master:
url: jdbc:highgo://localhost:5432/ruoyi?currentSchema=ruoyi
username: ruoyi
password: your_password
validationQuery: SELECT version()
pagehelper:
helperDialect: postgresql
reasonable: true
特点:
- 兼容 PostgreSQL 语法
- 支持 Schema 隔离
- 可复用 PostgreSQL 的序列配置脚本
高斯数据库配置
华为高斯数据库(GaussDB)是企业级分布式数据库:
yaml
spring:
datasource:
driverClassName: org.postgresql.Driver
druid:
master:
url: jdbc:postgresql://localhost:5432/postgres?currentSchema=ruoyi
username: ruoyi
password: your_password
validationQuery: SELECT version()
pagehelper:
helperDialect: postgresql
reasonable: true
特点:
- 兼容 PostgreSQL 协议
- 支持分布式部署
- 适合大规模数据处理场景
主键自增策略对比
不同数据库的主键自增实现方式有所不同:
| 数据库 | 自增方式 | 示例 |
|---|---|---|
| MySQL | AUTO_INCREMENT | id BIGINT AUTO_INCREMENT |
| PostgreSQL | SEQUENCE | nextval('seq_name') |
| 达梦 | IDENTITY/SEQUENCE | 兼容 Oracle 语法 |
| 瀚高 | GENERATED AS IDENTITY | ADD GENERATED BY DEFAULT AS IDENTITY |
| 高斯 | SEQUENCE | 兼容 PostgreSQL |
PostgreSQL/瀚高 自增配置脚本:
sql
ALTER TABLE "sys_user"
ALTER COLUMN "user_id" ADD GENERATED BY DEFAULT AS IDENTITY (
INCREMENT 1
MINVALUE 10
CACHE 10
START 10
);
连接池配置
所有数据库统一使用 Druid 连接池,推荐配置:
yaml
druid:
initialSize: 5 # 初始连接数
minIdle: 10 # 最小空闲连接
maxActive: 20 # 最大连接数
maxWait: 60000 # 获取连接超时时间(ms)
connectTimeout: 30000 # 连接超时时间(ms)
socketTimeout: 60000 # 网络超时时间(ms)
timeBetweenEvictionRunsMillis: 60000 # 空闲检测间隔(ms)
minEvictableIdleTimeMillis: 300000 # 最小空闲时间(ms)
maxEvictableIdleTimeMillis: 900000 # 最大空闲时间(ms)
testWhileIdle: true # 空闲时检测
testOnBorrow: false # 借用时不检测
testOnReturn: false # 归还时不检测
主从分离支持
框架内置主从数据源支持,只需配置从库信息:
yaml
druid:
master:
url: jdbc:mysql://master-host:3306/ruoyi
username: ruoyi
password: master_password
slave:
enabled: true # 开启从库
url: jdbc:mysql://slave-host:3306/ruoyi
username: ruoyi
password: slave_password
数据库初始化步骤
1. MySQL 初始化
bash
# 创建数据库
CREATE DATABASE ruoyi DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
# 导入初始化脚本
mysql -u root -p ruoyi < sql/ruoyi-mysql.sql
# 如需 Magic-API 支持
mysql -u root -p ruoyi < sql/magic-api-mysql.sql
2. PostgreSQL 初始化
bash
# 创建数据库和 Schema
CREATE DATABASE ruoyi;
\c ruoyi
CREATE SCHEMA ruoyi;
# 导入初始化脚本
psql -U ruoyi -d ruoyi -f sql/ruoyi-pgsql.sql
# 配置自增序列(可选)
psql -U ruoyi -d ruoyi -f sql/auto-increment-pgsql-highgo.sql
3. 达梦数据库初始化
bash
# 使用 DM 管理工具导入
# 导入文件:sql/ruoyi-dm8.dmp
4. 瀚高数据库初始化
bash
# 创建 Schema
CREATE SCHEMA ruoyi;
# 导入初始化脚本
psql -U ruoyi -d ruoyi -f sql/ruoyi-highgo.sql
# 配置自增
psql -U ruoyi -d ruoyi -f sql/auto-increment-pgsql-highgo.sql
5. 高斯数据库初始化
bash
# 创建 Schema
CREATE SCHEMA ruoyi;
# 导入初始化脚本
gsql -U ruoyi -d postgres -f sql/ruoyi-gauss.sql
# 配置自增
gsql -U ruoyi -d postgres -f sql/auto-increment-gauss.sql
国产化适配建议
对于有国产化要求的项目,推荐以下方案:
| 场景 | 推荐数据库 | 理由 |
|---|---|---|
| 政务系统 | 达梦数据库 | 国产化认证完善,Oracle 兼容性好 |
| 金融系统 | 高斯数据库 | 分布式能力强,高可用性 |
| 通用场景 | 瀚高数据库 | PostgreSQL 生态兼容,迁移成本低 |
常见问题
Q1: 如何判断当前使用的数据库类型?
查看 application.yml 中的 spring.profiles.active 配置值。
Q2: 切换数据库后需要修改代码吗?
不需要。框架通过 MyBatis-Plus 和 PageHelper 实现了 SQL 方言自动适配。
Q3: 如何处理数据库特有的 SQL 语法?
建议使用 MyBatis 的动态 SQL 或 <if> 标签进行条件判断,避免使用数据库特有语法。
总结
RuoYi-SpringBoot3-Pro 的多数据库支持方案具有以下优势:
- 配置简单 - 通过 Profile 机制一键切换
- 覆盖全面 - 支持主流国内外数据库
- 开发友好 - 开发/生产环境配置分离
- 扩展灵活 - 支持主从分离、连接池优化
- 国产适配 - 完善的国产数据库支持
无论是追求性能的 MySQL、功能丰富的 PostgreSQL,还是满足国产化要求的达梦、瀚高、高斯,都能在这套框架中找到最佳实践。