【RuoYi-SpringBoot3-Pro】:多租户功能上手指南

简介: RuoYi-SpringBoot3-Pro集成MyBatis-Plus多租户插件,自动注入tenant_id过滤条件,实现数据隔离。通过简单配置即可开启多租户,支持系统表免隔离、超级管理员跨租户查看,提升SaaS开发效率。结合AI建表工具,快速完成数据库初始化。

【RuoYi-SpringBoot3-Pro】:多租户功能上手指南

做 SaaS 系统最头疼的是什么?肯定是数据隔离

RuoYi-SpringBoot3-Pro 直接集成了 MyBatis-Plus 的多租户插件(TenantLineInnerInterceptor),不用再关注租户 ID,框架层自动给你注入过滤条件。配合 使用 Dify + AI 快速生成多数据库建表语句,使开发效率直线提升!

开启配置

多租户功能默认是关闭的。在 ruoyi-admin 下面的 application.yml 里找 tenant 配置:

tenant:
  enable: true # 把它改成 true,多租户就生效了
  column: tenant_id # 你的表里用来区分租户的字段名,一般都叫 tenant_id
  filterTables: # 这里的表,会强制进行 SQL 过滤
  ignoreTables: # 这些表是不进行租户隔离的
    - sys_user # 用户表
    - sys_role # 角色表
    - sys_menu # 菜单表
    - sys_dept # 部门表
    - sys_dict_data # 字典数据
    # ... 省略其它系统表
  ignoreLoginNames: # 超级管理员,让他能看所有租户的数据
    - admin

由于 RuoYi-SpringBoot3-Pro 是在 RuoYi-Vue3 基础上的增强版,本着只做增强,不做改变 的原则,原来系统的表只在 sys_user 中添加了 tenant_id。有需要的小伙伴需要自行扩展。

实现代码

就像开头所说,其实实现特别简单,就是用 MyBatis-Plus 的拦截器。

ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java,中设置:

@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(TenantProperties tenantProperties) {
   
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    if (Boolean.TRUE.equals(tenantProperties.getEnable())) {
   
        // 启用多租户插件拦截
        interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new MultiTenantHandler(tenantProperties)));
    }
    // ...
    return interceptor;
}

它注册了一个 TenantLineInnerInterceptor,并传入了一个 MultiTenantHandler。这个 Handler 位于 ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java,它会:

  1. 从当前登录用户信息里取出 tenantId
  2. 判断当前表需不需要隔离(看是不是在 ignoreTables 里)。
  3. 如果需要隔离,就在你的 SQL 后面自动追加 AND tenant_id = 123

注意事项

  • 多租户不等于权限过滤,租户之间是完全隔离的。
  • 由于多租户ID 是从当前登录用户信息获取,所以像定时任务的处理,需要自行根据业务逻辑判断。
  • 启用多租户后,所有执行的 method 的 SQL 都会进行处理。
  • 自定义的 SQL 请按规范书写,特别是涉及到多个表的每个表都要给别名,特别是 inner join 的要写标准的 inner join。

往期教程合集

RuoYi-SpringBoot3-Pro

目录
相关文章
|
17天前
|
人工智能 开发框架 JSON
【RuoYi-SpringBoot3-Pro】:AI 能力再扩展,一个方法打通 n8n 工作流
RuoYi-SpringBoot3-Pro 集成 n8n,通过一个 Webhook 方法实现 AI 能力扩展。Java 端轻量触发,复杂 AI 工作流由 n8n 可视化编排,支持文本处理、文件上传等场景,灵活高效,助力企业级应用快速集成自动化能力。
139 5
|
11天前
|
关系型数据库 项目管理 数据安全/隐私保护
Leantime:开源项目管理神器
Leantime是一款专为非专业项目经理设计的开源项目管理工具,在Jira的臃肿和Trello的简化之间找到了完美平衡。它集成了战略规划、敏捷看板、甘特图、知识管理、工时跟踪等全面功能,支持Docker一键部署。无论是创业团队还是企业部门,Leantime都能以极低的学习成本,让每位成员轻松参与项目协作。告别过度复杂的工具,用这款轻量而强大的神器,为你的2026年项目计划保驾护航。
106 16
 Leantime:开源项目管理神器
|
30天前
|
人工智能 前端开发 Java
【RuoYi-SpringBoot3-Pro】:接入 AI 对话能力
RuoYi-SpringBoot3-Pro 内置 OpenAI 工具类,支持同步/流式对话、多角色消息与代理配置,兼容 OpenAI 及第三方 API,开箱即用,助力开发者快速集成 AI 聊天功能。
177 0
|
12天前
|
机器学习/深度学习 计算机视觉 网络架构
YOLO26改进 - 注意力机制 |融合HCF-Net维度感知选择性整合模块DASI 增强小目标显著性
本文介绍将HCF-Net中的维度感知选择性融合(DASI)模块集成至YOLO26检测头,通过通道分区与Sigmoid自适应加权,融合高/低维及当前层特征,显著提升红外小目标检测精度,在SIRST数据集上超越主流方法。(239字)
|
13天前
|
人工智能 前端开发 测试技术
Violit: Streamlit杀手,无需全局刷新,构建AI快捷面板
Violit 是新一代 Python Web 框架,融合 Streamlit 的简洁语法与 React 的响应式性能。首创 O(1) 信号状态架构,零重运行、无需 `@cache`/`key`/回调,支持桌面原生应用与 30+ 主题,开箱即用、极速如光。
125 15
|
17天前
|
Java 程序员 微服务
【RuoYi-SpringBoot3-Pro】:热更新,设置一次,效率翻倍
【RuoYi-SpringBoot3-Pro】提升开发效率必备:热更新配置指南!告别手动重启,详解Spring Boot DevTools与JRebel插件的使用与对比,实现代码修改即时生效,大幅提升开发体验。免费+高效方案一键掌握!(239字)
110 3
【RuoYi-SpringBoot3-Pro】:热更新,设置一次,效率翻倍
|
10天前
|
机器学习/深度学习 监控 算法
基于YOLOv8的工业织物瑕疵检测识别|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
本项目基于YOLOv8构建工业织物瑕疵智能检测系统,精准识别洞、异物、油斑、织线错误四类缺陷,专为弱纹理高精细织物(如丝绸、粘胶)设计。含完整源码、标注数据集、预训练权重、PyQt5可视化界面及详细教程,支持图片/视频/摄像头实时检测,开箱即用,适用于质检、教学与科研。
107 14
|
XML SQL Java
ClickHouse【SpringBoot集成】clickhouse+mybatis-plus配置及使用问题说明(含建表语句、demo源码、测试说明)
ClickHouse【SpringBoot集成】clickhouse+mybatis-plus配置及使用问题说明(含建表语句、demo源码、测试说明)
2300 0
|
13天前
|
API Android开发 iOS开发
PicGo:为高效创作者而生的终极图片上传工具
PicGo是一款跨平台开源图片上传工具,能大幅简化创作中的图片处理流程。它支持拖拽、粘贴、快捷键等多种上传方式,自动生成Markdown/HTML链接,兼容主流图床和插件。开发者友好,提供API和命令行支持,可与VS Code、Obsidian等编辑器无缝集成。通过一键上传和智能链接处理,PicGo让图片管理变得无感高效,适合技术博主、文档工程师等创作者使用。
145 17
PicGo:为高效创作者而生的终极图片上传工具
|
25天前
|
人工智能 自然语言处理 安全
【RuoYi-SpringBoot3-Pro】:使用 UEditor Plus 富文本编辑器替代 quill
【RuoYi-SpringBoot3-Pro】集成UEditor Plus富文本编辑器,替代功能有限的quill。UEditor Plus界面全新,支持文档导入及AI续写、优化、生成等内容创作能力,前后端开箱即用,显著提升编辑体验与开发效率。
180 6
【RuoYi-SpringBoot3-Pro】:使用 UEditor Plus 富文本编辑器替代 quill