package com.qianwen.core.mp.config;
|
|
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
|
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
|
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
|
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
|
import java.util.List;
|
import net.sf.jsqlparser.expression.Expression;
|
import net.sf.jsqlparser.expression.StringValue;
|
import org.mybatis.spring.annotation.MapperScan;
|
import com.qianwen.core.launch.props.BladePropertySource;
|
import com.qianwen.core.mp.BladeMetaObjectHandler;
|
import com.qianwen.core.mp.injector.BladeSqlInjector;
|
import com.qianwen.core.mp.intercept.QueryInterceptor;
|
import com.qianwen.core.mp.plugins.BladePaginationInterceptor;
|
import com.qianwen.core.mp.plugins.SqlLogInterceptor;
|
import com.qianwen.core.mp.props.MybatisPlusProperties;
|
import com.qianwen.core.mp.resolver.PageArgumentResolver;
|
import com.qianwen.core.secure.utils.AuthUtil;
|
import com.qianwen.core.tool.utils.Func;
|
import com.qianwen.core.tool.utils.ObjectUtil;
|
import org.springframework.beans.factory.ObjectProvider;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.core.annotation.AnnotationAwareOrderComparator;
|
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
|
@EnableConfigurationProperties({MybatisPlusProperties.class})
|
@Configuration(proxyBeanMethods = false)
|
@MapperScan({"com.qianwen.**.mapper.**"})
|
@BladePropertySource("classpath:/blade-mybatis.yml")
|
/* loaded from: blade-starter-mybatis-9.3.0.0-SNAPSHOT.jar:org/springblade/core/mp/config/MybatisPlusConfiguration.class */
|
public class MybatisPlusConfiguration implements WebMvcConfigurer {
|
@ConditionalOnMissingBean({TenantLineInnerInterceptor.class})
|
@Bean
|
public TenantLineInnerInterceptor tenantLineInnerInterceptor() {
|
return new TenantLineInnerInterceptor(new TenantLineHandler() { // from class: org.springblade.core.mp.config.MybatisPlusConfiguration.1
|
public Expression getTenantId() {
|
return new StringValue(Func.toStr(AuthUtil.getTenantId(), "000000"));
|
}
|
|
public boolean ignoreTable(String tableName) {
|
return true;
|
}
|
});
|
}
|
|
@ConditionalOnMissingBean({MybatisPlusInterceptor.class})
|
@Bean
|
public MybatisPlusInterceptor mybatisPlusInterceptor(ObjectProvider<QueryInterceptor[]> queryInterceptors, TenantLineInnerInterceptor tenantLineInnerInterceptor, MybatisPlusProperties mybatisPlusProperties) {
|
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
|
if (mybatisPlusProperties.getTenantMode().booleanValue()) {
|
interceptor.addInnerInterceptor(tenantLineInnerInterceptor);
|
}
|
BladePaginationInterceptor paginationInterceptor = new BladePaginationInterceptor();
|
QueryInterceptor[] queryInterceptorArray = (QueryInterceptor[]) queryInterceptors.getIfAvailable();
|
if (ObjectUtil.isNotEmpty(queryInterceptorArray)) {
|
AnnotationAwareOrderComparator.sort(queryInterceptorArray);
|
paginationInterceptor.setQueryInterceptors(queryInterceptorArray);
|
}
|
paginationInterceptor.setMaxLimit(mybatisPlusProperties.getPageLimit());
|
paginationInterceptor.setOverflow(mybatisPlusProperties.getOverflow().booleanValue());
|
paginationInterceptor.setOptimizeJoin(mybatisPlusProperties.getOptimizeJoin().booleanValue());
|
interceptor.addInnerInterceptor(paginationInterceptor);
|
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
|
return interceptor;
|
}
|
|
@Bean
|
public SqlLogInterceptor sqlLogInterceptor(MybatisPlusProperties mybatisPlusProperties) {
|
return new SqlLogInterceptor(mybatisPlusProperties);
|
}
|
|
@ConditionalOnMissingBean({ISqlInjector.class})
|
@Bean
|
public ISqlInjector sqlInjector() {
|
return new BladeSqlInjector();
|
}
|
|
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
|
argumentResolvers.add(new PageArgumentResolver());
|
}
|
|
@Bean
|
public MetaObjectHandler metaObjectHandler() {
|
return new BladeMetaObjectHandler();
|
}
|
}
|