以下是使用 MyBatis-Plus 多租户插件的基本配置和使用方法:
1. 添加 Maven 依赖: 在项目的 pom.xml 文件中添加 MyBatis-Plus 依赖。
<!-- Maven 依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>最新版本</version>
</dependency>
2. 配置多租户插件: 在 Spring Boot 项目的 application.yml 或 application.properties 中配置多租户插件。
# 多租户插件配置
mybatis-plus:
configuration:
# 其他配置
multi-tenant-type: SCHEMA
multi-tenant-column: tenant_id
上述配置中,multi-tenant-type: SCHEMA 表示使用数据库 schema 的方式进行租户隔离,multi-tenant-column: tenant_id 表示使用名为 "tenant_id" 的字段作为租户标识。你需要在实体类中添加一个名为 "tenant_id" 的字段,并配置 @TableField 注解。
// 示例:多租户字段配置
@TableField(value = "tenant_id", fill = FieldFill.INSERT)
private String tenantId;
3. 动态租户解析器: 配置一个动态租户解析器,用于动态获取当前租户标识。
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new TenantLineHandler() {
@Override
public Expression getTenantId() {
// 在这里根据实际情况获取当前租户标识
return new LongValue(1L); // 示例中写死租户标识为1
}
@Override
public String getTenantIdColumn() {
return "tenant_id";
}
@Override
public boolean ignoreTable(String tableName) {
// 可以配置忽略处理的表
return false;
}
}));
return interceptor;
}
上述示例中,getTenantId 方法需要根据实际情况返回当前租户的标识,这里为了示例写死为 1。
4. 在 SQL 语句中使用租户字段: 在进行查询和更新操作时,MyBatis-Plus 会自动根据租户标识生成对应的 SQL 语句。
// 示例:查询
List<User> userList = userMapper.selectList(Wrappers.<User>lambdaQuery()
.eq(User::getAge, 25));
// 示例:更新
User user = new User();
user.setAge(26);
userMapper.update(user, Wrappers.<User>lambdaUpdate()
.eq(User::getId, 1));
在上述示例中,通过 User::getAge 方法和 User::getId 方法,MyBatis-Plus 会自动根据租户标识生成包含租户字段的 SQL 语句。
多租户插件可以帮助你在多租户系统中实现数据隔离,简化了在 SQL 语句中添加租户字段的操作。请根据实际情况灵活配置租户字段和租户解析器。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7072/MyBatis