【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,还是满足国产化要求的达梦、瀚高、高斯,都能在这套框架中找到最佳实践。


相关推荐
码事漫谈1 小时前
VSCode CMake Tools 功能解析、流程与最佳实践介绍
后端
火云牌神2 小时前
本地大模型编程实战(38)实现一个通用的大模型客户端
人工智能·后端
码事漫谈2 小时前
从C++/MFC到CEF与TypeScript的桌面架构演进
后端
weixin_462446232 小时前
SpringBoot切换Redis的DB
数据库·spring boot·redis
冰块的旅行3 小时前
magic-api使用
后端
用户89535603282203 小时前
Goroutine + Channel 高效在哪?一文吃透 Go 并发底层 G-M-P 调度与实现
后端·go
鸽芷咕3 小时前
静态住宅 IP 实战测评:手把手教你高效获取全球前沿资讯
后端
西召3 小时前
Spring Kafka 动态消费实现案例
java·后端·kafka
lomocode3 小时前
前端传了个 null,后端直接炸了——防御性编程原来这么重要!
后端·ai编程
镜花水月linyi3 小时前
ThreadLocal 深度解析(上)
java·后端