多租户代码框架

This commit is contained in:
zhonghua1
2025-12-16 23:34:07 +08:00
parent 5453026309
commit 406f7d692b
36 changed files with 956 additions and 39 deletions

View File

@@ -0,0 +1,41 @@
package com.rj.config;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.rj.tenant.TenantContextHolder;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
/**
* MyBatis-Plus 公共字段自动填充处理器
*
* <p>
* 仅负责在插入时为带有 tenantId 字段的实体自动填充当前租户ID<br/>
* 更新时不修改 tenantId确保租户ID一旦写入不可被业务层随意修改。
* </p>
*/
@Component
public class MybatisPlusMetaObjectHandler implements MetaObjectHandler {
private static final String TENANT_FIELD = "tenantId";
@Override
public void insertFill(MetaObject metaObject) {
// 仅在实体中存在 tenantId 字段且当前值为空时进行填充
if (metaObject.hasSetter(TENANT_FIELD)) {
Object currentValue = getFieldValByName(TENANT_FIELD, metaObject);
if (currentValue == null) {
String tenantId = TenantContextHolder.getTenantId();
if (tenantId != null) {
this.strictInsertFill(metaObject, TENANT_FIELD, String.class, tenantId);
}
}
}
}
@Override
public void updateFill(MetaObject metaObject) {
// 不自动更新 tenantId保持租户ID稳定
}
}