在企业级应用开发中,数据库选型往往受到多种因素影响:成本预算、技术栈偏好、国产化要求、性能需求等。
RuoYi-SpringBoot3-Pro[1] 框架对原 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 配置:
spring:
profiles:
active: devpg # 可选值: devmy, devpg, devdm, devhg, devgsMySQL 是最常用的关系型数据库,配置相对简单:
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 DUALmysqlPostgreSQL 是功能强大的开源数据库,支持丰富的数据类型和扩展:
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 序列实现主键自增currentSchema=ruoyi)SELECT version()postgresql序列配置示例:
CREATE SEQUENCE "ruoyi"."sys_user_user_id_seq"
INCREMENT 1
MINVALUE 10
START 10
CACHE 10;达梦数据库是国产数据库的代表,广泛应用于政务、金融等领域:
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.dmp 导入文件瀚高数据库基于 PostgreSQL 内核,是国产化替代的优选方案:
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特点:
华为高斯数据库(GaussDB)是企业级分布式数据库:
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特点:
不同数据库的主键自增实现方式有所不同:
| 数据库 | 自增方式 | 示例 |
|---|---|---|
| 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/瀚高 自增配置脚本:
ALTER TABLE "sys_user"
ALTER COLUMN "user_id" ADD GENERATED BY DEFAULT AS IDENTITY (
INCREMENT 1
MINVALUE 10
CACHE 10
START 10
);所有数据库统一使用 Druid 连接池,推荐配置:
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 # 归还时不检测框架内置主从数据源支持,只需配置从库信息:
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# 创建数据库
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# 创建数据库和 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# 使用 DM 管理工具导入
# 导入文件:sql/ruoyi-dm8.dmp# 创建 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# 创建 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 生态兼容,迁移成本低 |
查看 application.yml 中的 spring.profiles.active 配置值。
不需要。框架通过 MyBatis-Plus 和 PageHelper 实现了 SQL 方言自动适配。
建议使用 MyBatis 的动态 SQL 或 <if> 标签进行条件判断,避免使用数据库特有语法。
RuoYi-SpringBoot3-Pro 的多数据库支持方案具有以下优势:
无论是追求性能的 MySQL、功能丰富的 PostgreSQL,还是满足国产化要求的达梦、瀚高、高斯,都能在这套框架中找到最佳实践。
[1] RuoYi-SpringBoot3-Pro: https://github.com/undsky/RuoYi-SpringBoot3-Pro
[2] RuoYi-SpringBoot3-Pro 文档: https://www.undsky.com/blog/?category=RuoYi-SpringBoot3-Pro#