【RuoYi-SpringBoot3-Pro】:多数据库支持,再也不用为数据库选型烦恼了

【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 的多数据库支持方案具有以下优势:

  1. 配置简单 - 通过 Profile 机制一键切换
  2. 覆盖全面 - 支持主流国内外数据库
  3. 开发友好 - 开发/生产环境配置分离
  4. 扩展灵活 - 支持主从分离、连接池优化
  5. 国产适配 - 完善的国产数据库支持

无论是追求性能的 MySQL、功能丰富的 PostgreSQL,还是满足国产化要求的达梦、瀚高、高斯,都能在这套框架中找到最佳实践。


相关推荐
苏三说技术35 分钟前
Claude Code从失控到起飞,只用了这些技巧
后端
长栎1 小时前
写 for 循环写了十年,你却从没用过迭代器模式最狠的那一面
后端
LiaCode2 小时前
Redis 在生产项目的使用
前端·后端
用户559822481222 小时前
Docker Compose Down 导致容器数据误删——ext4 日志恢复全记录
后端
LiaCode2 小时前
一天学完 redis 的爽翻版核心知识总结
前端·后端
大刚测试开发实战2 小时前
如何内网穿透访问本地私有化部署的TestHub
前端·后端·github
xiaodaoluanzha2 小时前
迄今為止,最簡單的編程語言 Nolang
前端·后端
Csvn2 小时前
Docker 容器管理入门 — 从镜像到容器编排
后端
用户762352425912 小时前
ShardingJDBC
后端
行者全栈架构师2 小时前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端