mybatis-plus-tenant-support

发布于:2025-07-31 ⋅ 阅读:(18) ⋅ 点赞:(0)

介绍

mybatisplus 多租户组件增强

pom文件引入点击此处查看最新版本号

<!--基于jdk21,想要低版本的自行下载源码打包-->
<dependency>
    <groupId>com.xiaoyudeguang</groupId>
    <artifactId>mybatis-plus-tenant-support</artifactId>
    <version>${最新版本}</version>
</dependency>

使用说明

1. 实体类中增加一个tenantId字段

@TenantIgnore
@TableName("sys_user")
public class sysUser {

  @TableField(fill = FieldFill.INSERT)
  protected String tenantId;
}

2. 请求头增加 tenant_id 字段,SQL将自动拼接tenant_id条件

在这里插入图片描述

3. 使用@TenantIgnore注解(关闭SQL自动拼接tenant_id条件)

@TenantIgnore
@TableName("sys_user")
public class sysUser {

  @TableField(fill = FieldFill.INSERT)
  protected String tenantId;
}

4. 替换默认租户字段

如果不想用 tenant_id 作为租户字段,可以在yml增加下面的配置以替换为新字段:

mybatis-plus:
  config:
    tenant-id-column: ${新的租户字段}

5. 自定义MetaObjectHandler类,新增数据时自动插入 tenant_id 字段值

@Component
public class MybatisMetaObjectHandler implements MetaObjectHandler {

    @Autowired(required = false)
    private TenantLineHandler tenantLineHandler;

    @Override
    public void insertFill(MetaObject metaObject) {
        if (tenantLineHandler != null) {
            this.setFieldValByName(tenantLineHandler.getTenantIdColumn(), tenantLineHandler.getTenantId(), metaObject);
        }
        this.setFieldValByName("creator", userNo, metaObject);
        this.setFieldValByName("created", LocalDateTime.now(), metaObject);
        this.setFieldValByName("modifier", userNo, metaObject);
        this.setFieldValByName("modified", LocalDateTime.now(), metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("modifier", userNo, metaObject);
        this.setFieldValByName("modified", LocalDateTime.now(), metaObject);
    }

}

网站公告

今日签到

点亮在社区的每一天
去签到