nieqiurong пре 1 година
родитељ
комит
a9a35c63ba

+ 1 - 2
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/assist/ISqlRunner.java

@@ -21,8 +21,7 @@ import java.util.List;
 import java.util.Map;
 
 /**
- * <p>
- * </p>
+ * SqlRunner执行接口
  *
  * @author yuxiaobin
  * @since 2018/2/7

+ 2 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/batch/BatchMethod.java

@@ -18,6 +18,8 @@ package com.baomidou.mybatisplus.core.batch;
 import org.apache.ibatis.mapping.MappedStatement;
 
 /**
+ * 批量执行方法
+ *
  * @author nieqiurong
  * @since 3.5.4
  */

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

@@ -24,7 +24,9 @@ import com.baomidou.mybatisplus.core.toolkit.ReflectionKit;
 import org.apache.ibatis.builder.MapperBuilderAssistant;
 import org.apache.ibatis.logging.Log;
 import org.apache.ibatis.logging.LogFactory;
+import org.apache.ibatis.session.Configuration;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 
@@ -47,11 +49,15 @@ public abstract class AbstractSqlInjector implements ISqlInjector {
             if (!mapperRegistryCache.contains(className)) {
                 TableInfo tableInfo = TableInfoHelper.initTableInfo(builderAssistant, modelClass);
                 List<AbstractMethod> methodList = this.getMethodList(mapperClass, tableInfo);
+                // 兼容旧代码
+                if (CollectionUtils.isEmpty(methodList)) {
+                    methodList = this.getMethodList(builderAssistant.getConfiguration(), mapperClass, tableInfo);
+                }
                 if (CollectionUtils.isNotEmpty(methodList)) {
                     // 循环注入自定义方法
                     methodList.forEach(m -> m.inject(builderAssistant, mapperClass, modelClass, tableInfo));
                 } else {
-                    logger.debug(mapperClass.toString() + ", No effective injection method was found.");
+                    logger.debug(className + ", No effective injection method was found.");
                 }
                 mapperRegistryCache.add(className);
             }
@@ -64,9 +70,27 @@ public abstract class AbstractSqlInjector implements ISqlInjector {
      * </p>
      *
      * @param mapperClass 当前mapper
+     * @param tableInfo   表信息
      * @return 注入的方法集合
      * @since 3.1.2 add  mapperClass
+     * @deprecated 3.5.6 {@link #getMethodList(Configuration, Class, TableInfo)}
      */
-    public abstract List<AbstractMethod> getMethodList(Class<?> mapperClass,TableInfo tableInfo);
+    @Deprecated
+    public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {
+        return getMethodList(tableInfo.getConfiguration(), mapperClass, tableInfo);
+    }
+
+    /**
+     * 获取注入的方法
+     *
+     * @param configuration 配置对象
+     * @param mapperClass   当前mapper
+     * @param tableInfo     表信息
+     * @return 注入方法集合
+     * @since 3.5.6
+     */
+    public List<AbstractMethod> getMethodList(Configuration configuration, Class<?> mapperClass, TableInfo tableInfo) {
+        return new ArrayList<>();
+    }
 
 }

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

@@ -19,6 +19,7 @@ import com.baomidou.mybatisplus.core.config.GlobalConfig;
 import com.baomidou.mybatisplus.core.injector.methods.*;
 import com.baomidou.mybatisplus.core.metadata.TableInfo;
 import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
+import org.apache.ibatis.session.Configuration;
 
 import java.util.List;
 import java.util.stream.Stream;
@@ -35,8 +36,8 @@ import static java.util.stream.Collectors.toList;
 public class DefaultSqlInjector extends AbstractSqlInjector {
 
     @Override
-    public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {
-        GlobalConfig.DbConfig dbConfig = GlobalConfigUtils.getDbConfig(tableInfo.getConfiguration());
+    public List<AbstractMethod> getMethodList(Configuration configuration, Class<?> mapperClass, TableInfo tableInfo) {
+        GlobalConfig.DbConfig dbConfig = GlobalConfigUtils.getDbConfig(configuration);
         Stream.Builder<AbstractMethod> builder = Stream.<AbstractMethod>builder()
             .add(new Insert(dbConfig.isInsertIgnoreAutoIncrementColumn()))
             .add(new Delete())

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

@@ -32,4 +32,5 @@ public interface ISqlInjector {
      * @param mapperClass      mapper 接口的 class 对象
      */
     void inspectInject(MapperBuilderAssistant builderAssistant, Class<?> mapperClass);
+
 }

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

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

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

@@ -80,8 +80,8 @@ public class MybatisPlusConfigLogicDelete {
              * 测试注入自定义方法
              */
             @Override
-            public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {
-                List<AbstractMethod> methodList = super.getMethodList(mapperClass, tableInfo);
+            public List<AbstractMethod> getMethodList(org.apache.ibatis.session.Configuration configuration, Class<?> mapperClass, TableInfo tableInfo) {
+                List<AbstractMethod> methodList = super.getMethodList(configuration, mapperClass, tableInfo);
                 methodList.add(new LogicDeleteByIdWithFill());
                 methodList.add(new AlwaysUpdateSomeColumnById(t -> t.getFieldFill() != FieldFill.INSERT));
                 methodList.add(new InsertBatchSomeColumn(t -> !(t.getFieldFill() == FieldFill.UPDATE

+ 3 - 2
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/logicdel/LogicDelTest.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.injector.methods.LogicDeleteBatchByIds;
 import com.baomidou.mybatisplus.test.BaseDbTest;
 import org.apache.ibatis.reflection.MetaObject;
+import org.apache.ibatis.session.Configuration;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
@@ -127,8 +128,8 @@ public class LogicDelTest extends BaseDbTest<EntityMapper> {
         });
         globalConfig.setSqlInjector(new DefaultSqlInjector() {
             @Override
-            public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {
-                List<AbstractMethod> methodList = super.getMethodList(mapperClass, tableInfo);
+            public List<AbstractMethod> getMethodList(Configuration configuration, Class<?> mapperClass, TableInfo tableInfo) {
+                List<AbstractMethod> methodList = super.getMethodList(configuration, mapperClass, tableInfo);
                 methodList.add(new LogicDeleteBatchByIds("testDeleteBatch"));
                 return methodList;
             }

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

@@ -82,8 +82,8 @@ public class MybatisPlusConfig {
              * 注入自定义全局方法
              */
             @Override
-            public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {
-                List<AbstractMethod> methodList = super.getMethodList(mapperClass, tableInfo);
+            public List<AbstractMethod> getMethodList(org.apache.ibatis.session.Configuration configuration, Class<?> mapperClass, TableInfo tableInfo) {
+                List<AbstractMethod> methodList = super.getMethodList(configuration, mapperClass, tableInfo);
                 methodList.add(new Upsert());
                 return methodList;
             }