当前位置:   article > 正文

Mybatis实现多租户_mybatis多租户

mybatis多租户
  1. @Configuration
  2. public class MyBatisPlusConfig {
  3. /**
  4. * 分页插件
  5. *
  6. * @return
  7. */
  8. @Bean
  9. public PaginationInterceptor paginationInterceptor() {
  10. PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
  11. // 创建SQL解析器集合
  12. List<ISqlParser> sqlParserList = new ArrayList<>();
  13. // 创建租户SQL解析器
  14. TenantSqlParser tenantSqlParser = new TenantSqlParser();
  15. // 设置租户处理器
  16. tenantSqlParser.setTenantHandler(new TenantHandler() {
  17. @Override
  18. public Expression getTenantId() {
  19. // 设置当前租户ID,实际情况你可以从cookie、或者缓存中拿都行
  20. return new StringValue("jiannan");
  21. }
  22. @Override
  23. public String getTenantIdColumn() {
  24. // 对应数据库租户ID的列名
  25. return "tenant_id";
  26. }
  27. @Override
  28. public boolean doTableFilter(String tableName) {
  29. // 是否需要需要过滤某一张表
  30. /* List<String> tableNameList = Arrays.asList("sys_user");
  31. if (tableNameList.contains(tableName)){
  32. return true;
  33. }*/
  34. return false;
  35. }
  36. });
  37. sqlParserList.add(tenantSqlParser);
  38. paginationInterceptor.setSqlParserList(sqlParserList);
  39. return paginationInterceptor;
  40. }
  41. }

1、配置后所有sql将会默认带上租户id

2、如果部分sql无需带上租户id,可使用注解,如

  1. /**
  2. * 用户 Mapper 接口
  3. */
  4. public interface UserMapper extends BaseMapper<User> {
  5. /**
  6. * 自定Wrapper修改
  7. *
  8. * @param userWrapper 条件构造器
  9. * @param user 修改的对象参数
  10. * @return
  11. */
  12. @SqlParser(filter = true)
  13. int updateByMyWrapper(@Param(Constants.WRAPPER) Wrapper<User> userWrapper, @Param("user") User user);
  14. }
  15. # 开启 SQL 解析缓存注解生效,如果你的MP版本在3.1.1及以上则不需要配置
  16. mybatis-plus:
  17. global-config:
  18. sql-parser-cache: true

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/407452
推荐阅读
相关标签
  

闽ICP备14008679号