diff --git a/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinAutoConfiguration.java b/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinAutoConfiguration.java index 76d9c2d..bc6687a 100644 --- a/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinAutoConfiguration.java +++ b/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinAutoConfiguration.java @@ -1,7 +1,6 @@ package com.github.yulichang.autoconfigure; import com.baomidou.mybatisplus.autoconfigure.MybatisPlusLanguageDriverAutoConfiguration; -import com.baomidou.mybatisplus.core.injector.AbstractSqlInjector; import com.baomidou.mybatisplus.core.injector.ISqlInjector; import com.github.yulichang.autoconfigure.conditional.MPJSqlInjectorCondition; import com.github.yulichang.config.ConfigProperties; @@ -15,6 +14,7 @@ import org.mybatis.spring.SqlSessionFactoryBean; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeansException; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -70,6 +70,7 @@ public class MybatisPlusJoinAutoConfiguration { * mybatis plus join 拦截器 */ @Bean + @ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class}) public MPJInterceptor mpjInterceptor() { return new MPJInterceptor(); } @@ -78,8 +79,8 @@ public class MybatisPlusJoinAutoConfiguration { * mybatis plus 拦截器配置 */ @Bean - @ConditionalOnBean(SqlSessionFactory.class) - public MPJInterceptorConfig mpjInterceptorConfig(List sqlSessionFactoryList) { + @ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class}) + public MPJInterceptorConfig mpjInterceptorConfig(@Autowired(required = false) List sqlSessionFactoryList) { return new MPJInterceptorConfig(sqlSessionFactoryList, properties.getBanner()); } @@ -91,7 +92,8 @@ public class MybatisPlusJoinAutoConfiguration { @MPJSqlInjectorCondition @Order(Ordered.HIGHEST_PRECEDENCE) @ConditionalOnBean(ISqlInjector.class) - public MPJSqlInjector mpjSqlInjector(AbstractSqlInjector sqlInjector) { + @ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class}) + public MPJSqlInjector mpjSqlInjector(ISqlInjector sqlInjector) { logger.info("MPJSqlInjector init"); return new MPJSqlInjector(sqlInjector); } @@ -102,6 +104,7 @@ public class MybatisPlusJoinAutoConfiguration { @Bean @Order(Ordered.HIGHEST_PRECEDENCE) @ConditionalOnMissingBean(ISqlInjector.class) + @ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class}) public MPJSqlInjector mpjSqlInjectorOnMiss() { logger.info("MPJSqlInjector init"); return new MPJSqlInjector(); @@ -112,13 +115,14 @@ public class MybatisPlusJoinAutoConfiguration { */ @Bean @Order(Ordered.HIGHEST_PRECEDENCE) - public SpringContentUtils mpjSpringContent(MPJSpringContext springContext) { + @ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class}) + public SpringContentUtils mpjSpringContent(@Autowired(required = false) MPJSpringContext springContext) { return new SpringContentUtils(springContext); } @Configuration @Order(Ordered.HIGHEST_PRECEDENCE) - @ConditionalOnBean(SqlSessionFactory.class) + @ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class}) public static class MPJMappingConfig implements ApplicationListener { @Override @SuppressWarnings("NullableProblems") @@ -128,7 +132,7 @@ public class MybatisPlusJoinAutoConfiguration { } @Configuration - @ConditionalOnBean(SqlSessionFactory.class) + @ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class}) public static class MPJSpringContext implements SpringContentUtils.SpringContext, ApplicationContextAware { private ApplicationContext applicationContext; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/injector/MPJSqlInjector.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/injector/MPJSqlInjector.java index 6e2d004..68cffeb 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/injector/MPJSqlInjector.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/injector/MPJSqlInjector.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.MybatisPlusVersion; import com.baomidou.mybatisplus.core.injector.AbstractMethod; import com.baomidou.mybatisplus.core.injector.AbstractSqlInjector; import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector; +import com.baomidou.mybatisplus.core.injector.ISqlInjector; import com.baomidou.mybatisplus.core.injector.methods.*; import com.baomidou.mybatisplus.core.mapper.Mapper; import com.baomidou.mybatisplus.core.metadata.TableInfo; @@ -48,8 +49,10 @@ public class MPJSqlInjector extends DefaultSqlInjector { public MPJSqlInjector() { } - public MPJSqlInjector(AbstractSqlInjector sqlInjector) { - this.sqlInjector = sqlInjector; + public MPJSqlInjector(ISqlInjector sqlInjector) { + if (Objects.nonNull(sqlInjector) && sqlInjector instanceof AbstractSqlInjector) { + this.sqlInjector = (AbstractSqlInjector) sqlInjector; + } } /** @@ -107,14 +110,15 @@ public class MPJSqlInjector extends DefaultSqlInjector { "SelectPage"); list.removeIf(i -> methodList.contains(i.getClass().getSimpleName()) && Objects.equals(packageStr, i.getClass().getPackage().getName())); - addAll(list,getWrapperMethod()); - addAll(list,getJoinMethod()); + addAll(list, getWrapperMethod()); + addAll(list, getJoinMethod()); return list; } private List getJoinMethod() { List list = new ArrayList<>(); if (VersionUtils.compare(MybatisPlusVersion.getVersion(), "3.5.0") >= 0) { + list.add(new DeleteJoin(SqlMethod.DELETE_JOIN.getMethod())); list.add(new SelectJoinCount(SqlMethod.SELECT_JOIN_COUNT.getMethod())); list.add(new SelectJoinOne(SqlMethod.SELECT_JOIN_ONE.getMethod())); list.add(new SelectJoinList(SqlMethod.SELECT_JOIN_LIST.getMethod())); @@ -123,6 +127,7 @@ public class MPJSqlInjector extends DefaultSqlInjector { list.add(new SelectJoinMaps(SqlMethod.SELECT_JOIN_MAPS.getMethod())); list.add(new SelectJoinMapsPage(SqlMethod.SELECT_JOIN_MAPS_PAGE.getMethod())); } else { + list.add(new DeleteJoin()); list.add(new SelectJoinCount()); list.add(new SelectJoinOne()); list.add(new SelectJoinList());