介绍
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);
}
}