mybatis-plus多租户,通过用户id隔离的配置

实现步骤:

1.引入mybatis-puls依赖

2.创建一个多租户拦截类实现TenantLineHandler接口,并实现

getTenantId()、getTenantIdColumn()、ignoreTable(String tableName)方法。

3.MybatisPlusInterceptor加入多租户拦截。

配置代码如下:

1.引入mybatis-puls依赖

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3</version>
</dependency>

<!--多租户插件-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-extension</artifactId>
            <version>3.5.3</version>
 </dependency>

2.创建一个多租户拦截类实现TenantLineHandler接口,并实现getTenantId()、getTenantIdColumn()、ignoreTable(String tableName)方法。

package com.lyz.config;

import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
import com.lyz.utils.UserHoldUtil;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.LongValue;

public class TenantIdInterceptor implements TenantLineHandler {


    @Override
    public Expression getTenantId() {
        // 这里返回当前登录用户的ID作为租户ID
        // 你需要根据你的认证/授权逻辑来获取用户ID
        Integer userId = UserHoldUtil.getUser().getId();// 获取当前登录用户的ID;
        return new LongValue(userId);
    }

    @Override
    public String getTenantIdColumn() {
        return "user_id"; // 数据库表中的租户ID列名
    }

    @Override
    public boolean ignoreTable(String tableName) {
        // 可以根据需要指定不应用租户隔离的表

        return "user".equals(tableName);
    }
}

3.MybatisPlusInterceptor加入多租户拦截。

package com.lyz.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {
    /**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false
     * 避免缓存出现问题(该属性会在旧插件移除后一同移除)
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();

        // 多租户插件
        TenantLineHandler tenantLineHandler = new TenantIdInterceptor();
        TenantLineInnerInterceptor tenantLineInnerInterceptor = new TenantLineInnerInterceptor(tenantLineHandler);
        interceptor.addInnerInterceptor(tenantLineInnerInterceptor);
        // 分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }




}

最后,点个赞在走吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值