com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler用法实现
时间: 2023-10-08 21:06:33 浏览: 109
com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler 是 Mybatis-Plus 框架中的租户件,用于实现租户数据隔离下面是简单的示例:
1.义租户实体类首先,需要定义租户实体类,于存储租户信息。该实体类需要实现 ITenant 接口,示例代码如下:
```
public class Tenant implements ITenant {
private Long tenantId;
@Override
public Long getTenantId() {
return tenantId;
}
@Override
public void setTenantId(Long tenantId) {
this.tenantId = tenantId;
}
}
```
2. 实现 TenantLineHandler 类
接着,需要实现 TenantLineHandler 类,该类用于实现租户信息的填充和过滤。示例代码如下:
```
public class MyTenantLineHandler implements TenantLineHandler {
@Override
public Expression getTenantId() {
// 从当前线程中获取租户信息
Tenant tenant = TenantContext.getTenant();
if (tenant != null) {
return new LongValue(tenant.getTenantId());
} else {
return null;
}
}
@Override
public String getTenantIdColumn() {
// 返回租户id对应的数据库列名
return "tenant_id";
}
@Override
public boolean ignoreTable(String tableName) {
// 判断是否忽略某个表
return false; // 不忽略任何表
}
}
```
其中,getTenantId() 方法用于获取当前租户的租户id,getTenantIdColumn() 方法用于返回租户id在数据库中对应的列名,ignoreTable() 方法用于判断是否忽略某个表的租户信息处理。
3. 配置 Mybatis-Plus
最后,需要在 Mybatis-Plus 的配置文件中配置 TenantLineHandler。示例配置如下:
```
mybatis-plus:
global-config:
db-config:
# 设置租户插件
logic-not-delete-value: 0
tenant-handler: com.example.demo.handler.MyTenantLineHandler
tenant-line-arguments: tenantId
```
其中,tenant-handler 指定了 TenantLineHandler 的实现类,tenant-line-arguments 指定了租户id在实体类中的属性名。配置完成后,就可以在 DAO 层的 SQL 语句中使用 ${tenantId} 占位符来代表当前租户的租户id。
阅读全文