Forráskód Böngészése

获取注入方法时传递当前mapperClass.

nieqiuqiu 6 éve
szülő
commit
63a0f0b24b

+ 5 - 2
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/AbstractSqlInjector.java

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
 import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
 import com.baomidou.mybatisplus.core.toolkit.TableInfoHelper;
 import com.baomidou.mybatisplus.core.toolkit.TableInfoHelper;
+
 import org.apache.ibatis.builder.MapperBuilderAssistant;
 import org.apache.ibatis.builder.MapperBuilderAssistant;
 import org.apache.ibatis.logging.Log;
 import org.apache.ibatis.logging.Log;
 import org.apache.ibatis.logging.LogFactory;
 import org.apache.ibatis.logging.LogFactory;
@@ -48,7 +49,7 @@ public abstract class AbstractSqlInjector implements ISqlInjector {
             String className = mapperClass.toString();
             String className = mapperClass.toString();
             Set<String> mapperRegistryCache = GlobalConfigUtils.getMapperRegistryCache(builderAssistant.getConfiguration());
             Set<String> mapperRegistryCache = GlobalConfigUtils.getMapperRegistryCache(builderAssistant.getConfiguration());
             if (!mapperRegistryCache.contains(className)) {
             if (!mapperRegistryCache.contains(className)) {
-                List<AbstractMethod> methodList = this.getMethodList();
+                List<AbstractMethod> methodList = this.getMethodList(mapperClass);
                 if (CollectionUtils.isNotEmpty(methodList)) {
                 if (CollectionUtils.isNotEmpty(methodList)) {
                     TableInfo tableInfo = TableInfoHelper.initTableInfo(builderAssistant, modelClass);
                     TableInfo tableInfo = TableInfoHelper.initTableInfo(builderAssistant, modelClass);
                     // 循环注入自定义方法
                     // 循环注入自定义方法
@@ -66,9 +67,11 @@ public abstract class AbstractSqlInjector implements ISqlInjector {
      * 获取 注入的方法
      * 获取 注入的方法
      * </p>
      * </p>
      *
      *
+     * @param mapperClass 当前mapper
      * @return 注入的方法集合
      * @return 注入的方法集合
+     * @since 3.1.2 add  mapperClass
      */
      */
-    public abstract List<AbstractMethod> getMethodList();
+    public abstract List<AbstractMethod> getMethodList(Class<?> mapperClass);
 
 
     /**
     /**
      * 提取泛型模型,多泛型的时候请将泛型T放在第一位
      * 提取泛型模型,多泛型的时候请将泛型T放在第一位

+ 1 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/DefaultSqlInjector.java

@@ -31,7 +31,7 @@ import static java.util.stream.Collectors.toList;
 public class DefaultSqlInjector extends AbstractSqlInjector {
 public class DefaultSqlInjector extends AbstractSqlInjector {
 
 
     @Override
     @Override
-    public List<AbstractMethod> getMethodList() {
+    public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
         return Stream.of(
         return Stream.of(
             new Insert(),
             new Insert(),
             new Delete(),
             new Delete(),

+ 2 - 2
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/config/MybatisPlusConfig.java

@@ -118,8 +118,8 @@ public class MybatisPlusConfig {
              * 测试注入自定义方法
              * 测试注入自定义方法
              */
              */
             @Override
             @Override
-            public List<AbstractMethod> getMethodList() {
-                List<AbstractMethod> methodList = super.getMethodList();
+            public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
+                List<AbstractMethod> methodList = super.getMethodList(mapperClass);
                 methodList.add(new LogicDeleteByIdWithFill());
                 methodList.add(new LogicDeleteByIdWithFill());
                 methodList.add(new AlwaysUpdateSomeColumnById(t -> t.getFieldFill() != FieldFill.INSERT));
                 methodList.add(new AlwaysUpdateSomeColumnById(t -> t.getFieldFill() != FieldFill.INSERT));
                 methodList.add(new InsertBatchSomeColumn(t -> !(t.getFieldFill() == FieldFill.UPDATE
                 methodList.add(new InsertBatchSomeColumn(t -> !(t.getFieldFill() == FieldFill.UPDATE

+ 6 - 3
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/mysql/config/MybatisPlusConfig.java

@@ -31,8 +31,10 @@ import com.baomidou.mybatisplus.extension.plugins.tenant.TenantHandler;
 import com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser;
 import com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser;
 import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
 import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
 import com.baomidou.mybatisplus.test.mysql.MysqlMetaObjectHandler;
 import com.baomidou.mybatisplus.test.mysql.MysqlMetaObjectHandler;
+
 import net.sf.jsqlparser.expression.Expression;
 import net.sf.jsqlparser.expression.Expression;
 import net.sf.jsqlparser.expression.LongValue;
 import net.sf.jsqlparser.expression.LongValue;
+
 import org.apache.ibatis.session.SqlSessionFactory;
 import org.apache.ibatis.session.SqlSessionFactory;
 import org.apache.ibatis.type.JdbcType;
 import org.apache.ibatis.type.JdbcType;
 import org.mybatis.spring.annotation.MapperScan;
 import org.mybatis.spring.annotation.MapperScan;
@@ -40,10 +42,11 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
 import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
 
 
-import javax.sql.DataSource;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 
 
+import javax.sql.DataSource;
+
 /**
 /**
  * Mybatis Plus Config
  * Mybatis Plus Config
  *
  *
@@ -94,8 +97,8 @@ public class MybatisPlusConfig {
              * 注入自定义全局方法
              * 注入自定义全局方法
              */
              */
             @Override
             @Override
-            public List<AbstractMethod> getMethodList() {
-                List<AbstractMethod> methodList = super.getMethodList();
+            public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
+                List<AbstractMethod> methodList = super.getMethodList(mapperClass);
                 methodList.add(new LogicDeleteByIdWithFill());
                 methodList.add(new LogicDeleteByIdWithFill());
                 // 不要逻辑删除字段, 不要乐观锁字段, 不要填充策略是 UPDATE 的字段
                 // 不要逻辑删除字段, 不要乐观锁字段, 不要填充策略是 UPDATE 的字段
                 methodList.add(new InsertBatchSomeColumn(t -> !t.isLogicDelete() && !t.isVersion() && t.getFieldFill() != FieldFill.UPDATE));
                 methodList.add(new InsertBatchSomeColumn(t -> !t.isLogicDelete() && !t.isVersion() && t.getFieldFill() != FieldFill.UPDATE));