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 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 argumentResolvers) { argumentResolvers.add(new PageArgumentResolver()); } @Bean public MetaObjectHandler metaObjectHandler() { return new BladeMetaObjectHandler(); } }