当前位置:   article > 正文

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

mybatis-plus update_user_id配置

实现步骤:

1.引入mybatis-puls依赖

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

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

3.MybatisPlusInterceptor加入多租户拦截。

配置代码如下:

1.引入mybatis-puls依赖

  1. <dependency>
  2. <groupId>com.baomidou</groupId>
  3. <artifactId>mybatis-plus-boot-starter</artifactId>
  4. <version>3.5.3</version>
  5. </dependency>
  6. <!--多租户插件-->
  7. <dependency>
  8. <groupId>com.baomidou</groupId>
  9. <artifactId>mybatis-plus-extension</artifactId>
  10. <version>3.5.3</version>
  11. </dependency>

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

  1. package com.lyz.config;
  2. import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
  3. import com.lyz.utils.UserHoldUtil;
  4. import net.sf.jsqlparser.expression.Expression;
  5. import net.sf.jsqlparser.expression.LongValue;
  6. public class TenantIdInterceptor implements TenantLineHandler {
  7. @Override
  8. public Expression getTenantId() {
  9. // 这里返回当前登录用户的ID作为租户ID
  10. // 你需要根据你的认证/授权逻辑来获取用户ID
  11. Integer userId = UserHoldUtil.getUser().getId();// 获取当前登录用户的ID;
  12. return new LongValue(userId);
  13. }
  14. @Override
  15. public String getTenantIdColumn() {
  16. return "user_id"; // 数据库表中的租户ID列名
  17. }
  18. @Override
  19. public boolean ignoreTable(String tableName) {
  20. // 可以根据需要指定不应用租户隔离的表
  21. return "user".equals(tableName);
  22. }
  23. }

3.MybatisPlusInterceptor加入多租户拦截。

  1. package com.lyz.config;
  2. import com.baomidou.mybatisplus.annotation.DbType;
  3. import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
  4. import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
  5. import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
  6. import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.context.annotation.Configuration;
  9. @Configuration
  10. public class MybatisPlusConfig {
  11. /**
  12. * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false
  13. * 避免缓存出现问题(该属性会在旧插件移除后一同移除)
  14. */
  15. @Bean
  16. public MybatisPlusInterceptor mybatisPlusInterceptor() {
  17. MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
  18. // 多租户插件
  19. TenantLineHandler tenantLineHandler = new TenantIdInterceptor();
  20. TenantLineInnerInterceptor tenantLineInnerInterceptor = new TenantLineInnerInterceptor(tenantLineHandler);
  21. interceptor.addInnerInterceptor(tenantLineInnerInterceptor);
  22. // 分页插件
  23. interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
  24. return interceptor;
  25. }
  26. }

最后,点个赞在走吧!

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号