浏览代码

LambdaQueryWrapper 和 QueryWrapper 增加select(List<R> columns)重载,原本的select(R... columns)调用增加select(List<R> columns)即可实现扩展性,和消除警告
SqlHelper#getMapper 更改返回固定的BaseMapper为继承为BaseMapper的泛型

mahuibo 2 年之前
父节点
当前提交
adc4d4d0f3

+ 8 - 2
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/query/LambdaQueryWrapper.java

@@ -20,10 +20,12 @@ import com.baomidou.mybatisplus.core.conditions.SharedString;
 import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
 import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
 import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
-import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
 import com.baomidou.mybatisplus.core.toolkit.Assert;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
 
+import java.util.Arrays;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Predicate;
@@ -80,7 +82,11 @@ public class LambdaQueryWrapper<T> extends AbstractLambdaWrapper<T, LambdaQueryW
     @SafeVarargs
     @Override
     public final LambdaQueryWrapper<T> select(SFunction<T, ?>... columns) {
-        if (ArrayUtils.isNotEmpty(columns)) {
+        return select(Arrays.asList(columns));
+    }
+
+    public LambdaQueryWrapper<T> select(List<SFunction<T, ?>> columns) {
+        if (CollectionUtils.isNotEmpty(columns)) {
             this.sqlSelect.setStringValue(columnsToString(false, columns));
         }
         return typedThis;

+ 10 - 3
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/query/QueryWrapper.java

@@ -20,10 +20,12 @@ import com.baomidou.mybatisplus.core.conditions.SharedString;
 import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
 import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
 import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
-import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 
+import java.util.Arrays;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Predicate;
@@ -78,8 +80,13 @@ public class QueryWrapper<T> extends AbstractWrapper<T, String, QueryWrapper<T>>
     }
 
     @Override
-    public QueryWrapper<T> select(String... columns) {
-        if (ArrayUtils.isNotEmpty(columns)) {
+    @SafeVarargs
+    public final QueryWrapper<T> select(String... columns) {
+        return select(Arrays.asList(columns));
+    }
+
+    public QueryWrapper<T> select(List<String> columns) {
+        if (CollectionUtils.isNotEmpty(columns)) {
             this.sqlSelect.setStringValue(String.join(StringPool.COMMA, columns));
         }
         return typedThis;

+ 3 - 2
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/toolkit/SqlHelper.java

@@ -277,14 +277,15 @@ public final class SqlHelper {
      *
      * @param entityClass 实体
      * @param <T>         实体类型
+     * @param <Mapper>    Mapper类型
      * @return Mapper
      */
     @SuppressWarnings("unchecked")
-    public static <T> BaseMapper<T> getMapper(Class<T> entityClass, SqlSession sqlSession) {
+    public static <T,Mapper extends BaseMapper<T>> BaseMapper<T> getMapper(Class<T> entityClass, SqlSession sqlSession) {
         Assert.notNull(entityClass, "entityClass can't be null!");
         TableInfo tableInfo = Optional.ofNullable(TableInfoHelper.getTableInfo(entityClass)).orElseThrow(() -> ExceptionUtils.mpe("Can not find TableInfo from Class: \"%s\".", entityClass.getName()));
         Class<?> mapperClass = ClassUtils.toClassConfident(tableInfo.getCurrentNamespace());
-        return (BaseMapper<T>) tableInfo.getConfiguration().getMapper(mapperClass, sqlSession);
+        return (Mapper) tableInfo.getConfiguration().getMapper(mapperClass, sqlSession);
     }
 
     /**