MyBatis-Plus 高级功能:多租户功能实现

本文介绍了多租户的概念及其在软件架构中的应用,特别是在数据库设计中的数据隔离策略。文章以共享数据库、共享数据架构的方案为例,详细阐述了如何使用MyBatis-Plus(MP)实现多租户功能,包括在查询、增删改操作中自动添加租户ID。此外,还讨论了如何过滤特定SQL,提供了两种方法:配置ISqlParserFilter解析器和使用租户注解。
摘要由CSDN通过智能技术生成

前言

什么叫多租户,什么场景下使用多租户?

多租户是一种软件架构技术,在多用户的环境下,共有同一套系统,并且要注意数据之间的隔离性。

举个实际例子:小编曾经开发过一套H5程序,这套程序应用在不同医院的APP上,当医院患者下载医院APP,并且进入相对应的H5页面,APP则会把用户相关数据传输到小编这里。在传输的时候需要带上医院标识(租户ID),以便小编将数据进行隔离。

当不同的租户使用同一套程序,这里就需要考虑一个数据隔离的情况。一键获取mybatis相关资料

在这里插入图片描述

数据隔离有三种方案:

独立数据库:简单来说就是一个租户使用一个数据库,这种数据隔离级别最高,安全性最好,但是提高成本。

共享数据库、隔离数据架构:多租户使用同一个数据裤,但是每个租户对应一个Schema(数据库user)。

共享数据库、共享数据架构:使用同一个数据库,同一个Schema,但是在表中增加了租户ID的字段,这种共享数据程度最高,隔离级别最低。

二、具体实现

这里采用方案三,即共享数据库,共享数据架构,因为这种方案服务器成本最低,但是提高了开发成本。

所以MP就提供了一种多租户的解决方案,实现方式是基于分页插件进行实现的,具体实现代码如下:

/**
 * @Description: MybatisPlus配置类
 */
@Configuration
public class MyBatisPlusConfig {
   
 
 
    /**
     * 分页插件
     *
     * @return
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
   
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
 
        // 创建SQL解析器集合
        List<ISqlParser> sqlParserList = new ArrayList<>();
 
        // 创建租户SQL解析器
        TenantSqlParser tenantSqlParser = new TenantSqlParser
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值