mirror of
https://gitee.com/best_handsome/mybatis-plus-join
synced 2025-07-11 00:02:22 +08:00
添加配置方式
This commit is contained in:
parent
3fbeb1c84a
commit
d0774a06f1
@ -16,7 +16,7 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.factory.ListableBeanFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.ObjectProvider;
|
||||
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
|
||||
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||
@ -39,6 +39,7 @@ import org.springframework.core.annotation.Order;
|
||||
import javax.sql.DataSource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* springboot 自动配置类
|
||||
@ -58,16 +59,22 @@ public class MybatisPlusJoinAutoConfiguration {
|
||||
@SuppressWarnings("FieldCanBeLocal")
|
||||
private final MybatisPlusJoinProperties properties;
|
||||
|
||||
public MybatisPlusJoinAutoConfiguration(MybatisPlusJoinProperties properties) {
|
||||
this.properties = properties;
|
||||
ConfigProperties.banner = properties.getBanner();
|
||||
ConfigProperties.subTableLogic = properties.getSubTableLogic();
|
||||
ConfigProperties.msCache = properties.isMsCache();
|
||||
ConfigProperties.tableAlias = properties.getTableAlias();
|
||||
ConfigProperties.joinPrefix = properties.getJoinPrefix();
|
||||
ConfigProperties.logicDelType = "where".equalsIgnoreCase(properties.getLogicDelType()) ?
|
||||
public MybatisPlusJoinAutoConfiguration(MybatisPlusJoinProperties properties,
|
||||
ObjectProvider<MybatisPlusJoinPropertiesConsumer> propertiesConsumers) {
|
||||
MybatisPlusJoinPropertiesConsumer propertiesConsumer = propertiesConsumers.getIfAvailable();
|
||||
if (Objects.nonNull(propertiesConsumer)) {
|
||||
this.properties = propertiesConsumer.config(properties);
|
||||
} else {
|
||||
this.properties = properties;
|
||||
}
|
||||
ConfigProperties.banner = this.properties.getBanner();
|
||||
ConfigProperties.subTableLogic = this.properties.getSubTableLogic();
|
||||
ConfigProperties.msCache = this.properties.isMsCache();
|
||||
ConfigProperties.tableAlias = this.properties.getTableAlias();
|
||||
ConfigProperties.joinPrefix = this.properties.getJoinPrefix();
|
||||
ConfigProperties.logicDelType = "where".equalsIgnoreCase(this.properties.getLogicDelType()) ?
|
||||
LogicDelTypeEnum.WHERE : LogicDelTypeEnum.ON;
|
||||
ConfigProperties.mappingMaxCount = properties.getMappingMaxCount();
|
||||
ConfigProperties.mappingMaxCount = this.properties.getMappingMaxCount();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -85,7 +92,7 @@ public class MybatisPlusJoinAutoConfiguration {
|
||||
@Bean
|
||||
@Order(Ordered.HIGHEST_PRECEDENCE)
|
||||
@ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class})
|
||||
public MPJInterceptorConfig mpjInterceptorConfig(@Autowired(required = false) List<SqlSessionFactory> sqlSessionFactoryList) {
|
||||
public MPJInterceptorConfig mpjInterceptorConfig(List<SqlSessionFactory> sqlSessionFactoryList) {
|
||||
return new MPJInterceptorConfig(sqlSessionFactoryList, properties.getBanner());
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,18 @@
|
||||
package com.github.yulichang.autoconfigure;
|
||||
|
||||
/**
|
||||
* 自定义配置
|
||||
*
|
||||
* @author yulichang
|
||||
* @since 1.4.9
|
||||
*/
|
||||
public interface MybatisPlusJoinPropertiesConsumer {
|
||||
|
||||
/**
|
||||
* 自定义配置,此方法会覆盖配置文件中的MPJ配置
|
||||
*
|
||||
* @param properties 配置文件里的配置
|
||||
* @return 修改后的配置
|
||||
*/
|
||||
MybatisPlusJoinProperties config(MybatisPlusJoinProperties properties);
|
||||
}
|
@ -11,11 +11,11 @@ import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||
import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.ClassUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.ExceptionUtils;
|
||||
import com.github.yulichang.adapter.base.tookit.VersionUtils;
|
||||
import com.github.yulichang.adapter.v3431.AbstractMethodV3431;
|
||||
import com.github.yulichang.method.*;
|
||||
import com.github.yulichang.toolkit.MPJTableMapperHelper;
|
||||
import com.github.yulichang.toolkit.TableHelper;
|
||||
import com.github.yulichang.adapter.base.tookit.VersionUtils;
|
||||
import com.github.yulichang.toolkit.reflect.GenericTypeUtils;
|
||||
import lombok.Getter;
|
||||
import org.apache.ibatis.builder.MapperBuilderAssistant;
|
||||
@ -28,6 +28,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
@ -167,7 +168,14 @@ public class MPJSqlInjector extends DefaultSqlInjector {
|
||||
Class<?> modelClass = getSuperClassGenericType(mapperClass, Mapper.class, 0);
|
||||
super.inspectInject(builderAssistant, mapperClass);
|
||||
MPJTableMapperHelper.init(modelClass, mapperClass);
|
||||
TableHelper.init(modelClass, extractModelClassOld(mapperClass));
|
||||
Supplier<Class<?>> supplier = () -> {
|
||||
try {
|
||||
return extractModelClassOld(mapperClass);
|
||||
} catch (Throwable throwable) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
TableHelper.init(modelClass, supplier.get());
|
||||
}
|
||||
|
||||
public static Class<?> getSuperClassGenericType(final Class<?> clazz, final Class<?> genericIfc, final int index) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user