|
|
|
@ -16,10 +16,14 @@ import org.springframework.context.annotation.Configuration;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
// 标识这是一个配置类,Spring会自动扫描并处理这个类中的Bean定义等配置信息
|
|
|
|
|
@Configuration
|
|
|
|
|
// 配置MyBatis-Plus的Mapper扫描路径,会扫描com.tamguo.dao及其子包下的所有Mapper接口
|
|
|
|
|
@MapperScan("com.tamguo.dao*")
|
|
|
|
|
public class MybatisPlusConfig {
|
|
|
|
|
|
|
|
|
|
// 定义一个名为performanceInterceptor的Bean方法,用于创建并返回PerformanceInterceptor实例
|
|
|
|
|
// PerformanceInterceptor通常用于拦截SQL执行,记录SQL执行性能相关的信息,比如执行时长等
|
|
|
|
|
@Bean
|
|
|
|
|
public PerformanceInterceptor performanceInterceptor() {
|
|
|
|
|
return new PerformanceInterceptor();
|
|
|
|
@ -28,28 +32,35 @@ public class MybatisPlusConfig {
|
|
|
|
|
/**
|
|
|
|
|
* mybatis-plus分页插件<br>
|
|
|
|
|
* 文档:http://mp.baomidou.com<br>
|
|
|
|
|
* 此方法用于创建并配置PaginationInterceptor分页插件实例,用于在MyBatis-Plus中实现分页功能。
|
|
|
|
|
*/
|
|
|
|
|
@Bean
|
|
|
|
|
public PaginationInterceptor paginationInterceptor() {
|
|
|
|
|
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
|
|
|
|
|
paginationInterceptor.setLocalPage(true);// 开启 PageHelper 的支持
|
|
|
|
|
// 设置开启PageHelper的支持,以便能更好地与PageHelper等分页相关的工具兼容使用
|
|
|
|
|
paginationInterceptor.setLocalPage(true);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* 【测试多租户】 SQL 解析处理拦截器<br>
|
|
|
|
|
* 这里固定写成住户 1 实际情况你可以从cookie读取,因此数据看不到 【 麻花藤 】 这条记录( 注意观察 SQL )<br>
|
|
|
|
|
* 以下代码是配置多租户相关的SQL解析拦截逻辑,通过设置租户相关的处理器和解析器来处理涉及多租户的SQL语句。
|
|
|
|
|
*/
|
|
|
|
|
List<ISqlParser> sqlParserList = new ArrayList<ISqlParser>();
|
|
|
|
|
TenantSqlParser tenantSqlParser = new TenantSqlParser();
|
|
|
|
|
tenantSqlParser.setTenantHandler(new TenantHandler() {
|
|
|
|
|
// 获取租户ID对应的表达式,这里返回null,实际应用中通常需要按照业务规则返回正确的租户ID表达式
|
|
|
|
|
@Override
|
|
|
|
|
public Expression getTenantId() {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 指定租户ID对应的数据库表列名,此处设置为"company_id",意味着在多租户场景下通过这个列来区分不同租户的数据
|
|
|
|
|
@Override
|
|
|
|
|
public String getTenantIdColumn() {
|
|
|
|
|
return "company_id";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 判断是否对指定的表名进行过滤,返回true表示进行过滤,具体的过滤逻辑可以根据业务需求在这个方法内进一步完善
|
|
|
|
|
@Override
|
|
|
|
|
public boolean doTableFilter(String tableName) {
|
|
|
|
|
// 这里可以判断是否过滤表
|
|
|
|
@ -57,9 +68,9 @@ public class MybatisPlusConfig {
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sqlParserList.add(tenantSqlParser);
|
|
|
|
|
paginationInterceptor.setSqlParserList(sqlParserList);
|
|
|
|
|
|
|
|
|
|
// 以下过滤方式与 @SqlParser(filter = true) 注解等效
|
|
|
|
|
// paginationInterceptor.setSqlParserFilter(new ISqlParserFilter() {
|
|
|
|
|
// @Override
|
|
|
|
@ -72,19 +83,23 @@ public class MybatisPlusConfig {
|
|
|
|
|
// return false;
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
return paginationInterceptor;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 定义一个名为metaObjectHandler的Bean方法,用于创建并返回自定义的MetaObjectHandler实例(此处是MyMetaObjectHandler)
|
|
|
|
|
// MetaObjectHandler通常用于在插入或更新操作时自动填充一些公共字段,比如创建时间、更新时间等
|
|
|
|
|
@Bean
|
|
|
|
|
public MetaObjectHandler metaObjectHandler(){
|
|
|
|
|
public MetaObjectHandler metaObjectHandler() {
|
|
|
|
|
return new MyMetaObjectHandler();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 注入sql注入器
|
|
|
|
|
* 以下代码原本是用于注入LogicSqlInjector,它可能用于实现一些逻辑删除等相关的功能,但目前被注释掉了,可能暂时不需要这个功能或者后续再启用。
|
|
|
|
|
*/
|
|
|
|
|
/*@Bean
|
|
|
|
|
public ISqlInjector sqlInjector(){
|
|
|
|
|
return new LogicSqlInjector();
|
|
|
|
|
}*/
|
|
|
|
|
}
|
|
|
|
|
}
|