news 2026/5/28 5:53:22

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【RuoYi-SpringBoot3-Pro】:多租户功能上手指南

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

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

RuoYi-SpringBoot3-Pro[1]直接集成了 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. 1. 从当前登录用户信息里取出tenantId

  2. 2. 判断当前表需不需要隔离(看是不是在ignoreTables里)。

  3. 3. 如果需要隔离,就在你的 SQL 后面自动追加AND tenant_id = 123

注意事项

  • • 多租户不等于权限过滤,租户之间是完全隔离的。

  • • 由于多租户ID 是从当前登录用户信息获取,所以像定时任务的处理,需要自行根据业务逻辑判断。

  • • 启用多租户后,所有执行的 method 的 SQL 都会进行处理。

  • • 自定义的 SQL 请按规范书写,特别是涉及到多个表的每个表都要给别名,特别是 inner join 的要写标准的 inner join。

引用链接

[1]RuoYi-SpringBoot3-Pro:https://github.com/undsky/RuoYi-SpringBoot3-Pro

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/27 3:51:05

go语言对phone脱敏显示

在Go语言中实现手机号脱敏显示主要有以下几种方式,从简单到完整逐步推荐: 一、基础实现(字符串切片) 最常用且高效的方式是直接使用字符串切片操作,保留前3位和后4位,中间用*替换: go 复制 …

作者头像 李华
网站建设 2026/5/22 19:48:20

开源模型新选择:AnimeGANv2宫崎骏风格迁移实战指南

开源模型新选择:AnimeGANv2宫崎骏风格迁移实战指南 1. 引言 随着深度学习在图像生成领域的持续突破,风格迁移技术已从实验室走向大众应用。其中,AnimeGANv2 作为轻量级、高效率的动漫风格迁移模型,凭借其出色的画质表现和极低的…

作者头像 李华
网站建设 2026/5/20 19:20:37

Windows 10/11 优化大师 Windows Manager

一、前言:为什么 Windows 10/11 越用越卡? 相信很多朋友都有这样的体验: 新装的 Windows 10 / Windows 11 用着很流畅用了一段时间后: 开机变慢系统反应迟钝后台服务越来越多磁盘空间被莫名其妙占满 即便你不安装乱七八糟的软…

作者头像 李华
网站建设 2026/5/20 12:33:36

VibeThinker-1.5B-WEBUI权限管理:多用户场景下的配置建议

VibeThinker-1.5B-WEBUI权限管理:多用户场景下的配置建议 1. 引言 1.1 业务场景描述 随着轻量级大模型在开发者社区的广泛应用,VibeThinker-1.5B-WEBUI 因其低成本、高推理效率的特点,逐渐成为个人开发者和小型团队进行数学推导与编程辅助…

作者头像 李华
网站建设 2026/5/28 1:18:42

【性能测试】2_JMeter _JMeter文件目录

文章目录一、Bin目录二、docs目录三、printable_docs目录四、lib目录一、Bin目录 Bin目录:存放可执行文件和配置文件。 examples:目录下包含Jmeter使用实例ApacheJMeter.jar:JMeter源码包jmeter.bat:windows下启动文件jmeter.sh&#xff1a…

作者头像 李华
网站建设 2026/5/21 17:01:43

计算机毕设 java 基于 java 青少年篮球俱乐部管理系统设计与实现 基于 Java 的青少年篮球俱乐部管理平台 赛事组织与运动员服务系统

计算机毕设 java 基于 java 青少年篮球俱乐部管理系统设计与实现(配套有源码、程序、MySQL 数据库、论文),本套源码可先查看功能演示视频,文末有联系方式可领取。传统青少年篮球俱乐部管理存在赛事信息传递不及时、报名流程繁琐、…

作者头像 李华