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

在企业级应用开发中,数据库选型往往受到多种因素影响:成本预算、技术栈偏好、国产化要求、性能需求等。
RuoYi-SpringBoot3-Pro[1] 框架对原 RuoYi-Vue 进行了升级和增强,让开发者可以根据实际场景灵活选择数据库。

GitHub:https://github.com/undsky/RuoYi-SpringBoot3-Pro

支持的数据库

数据库版本要求开发配置生产配置初始化脚本
MySQL5.7+application-devmy.ymlapplication-prodmy.ymlruoyi-mysql.sql
PostgreSQL12+application-devpg.ymlapplication-prodpg.ymlruoyi-pgsql.sql
达梦数据库DM8+application-devdm.ymlapplication-proddm.ymlruoyi-dm8.dmp
瀚高数据库6.2+application-devhg.ymlapplication-prodhg.ymlruoyi-highgo.sql
高斯数据库GaussDBapplication-devgs.ymlapplication-prodgs.ymlruoyi-gauss.sql

快速切换数据库

切换数据库只需修改 application.yml 中的 spring.profiles.active 配置:


    
    
    
  spring:
  profiles:

    active:
 devpg  # 可选值: devmy, devpg, devdm, devhg, devgs

各数据库配置详解

MySQL 配置

MySQL 是最常用的关系型数据库,配置相对简单:


    
    
    
  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

特点:

PostgreSQL 配置

PostgreSQL 是功能强大的开源数据库,支持丰富的数据类型和扩展:


    
    
    
  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

特点:

序列配置示例:


    
    
    
  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 语法

特点:

瀚高数据库配置

瀚高数据库基于 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

特点:

主键自增策略对比

不同数据库的主键自增实现方式有所不同:

数据库自增方式示例
MySQLAUTO_INCREMENTid BIGINT AUTO_INCREMENT
PostgreSQLSEQUENCEnextval('seq_name')
达梦IDENTITY/SEQUENCE兼容 Oracle 语法
瀚高GENERATED AS IDENTITYADD 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

数据库初始化步骤

1. MySQL 初始化


    
    
    
  # 创建数据库
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 初始化


    
    
    
  # 创建数据库和 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. 达梦数据库初始化


    
    
    
  # 使用 DM 管理工具导入
# 导入文件:sql/ruoyi-dm8.dmp

4. 瀚高数据库初始化


    
    
    
  # 创建 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. 高斯数据库初始化


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

无论是追求性能的 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#