Переглянути джерело

fix(AbstractWrapper.java): 修复 lambda 表达式在 order、groupBy 只有条件一个时引起的类型推断错误问题

我怀疑是 咩咩 偷懒导致的,但是我没有证据
hanchunlin@aliyun.com 6 роки тому
батько
коміт
87df1faa91

+ 11 - 10
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractWrapper.java

@@ -268,7 +268,8 @@ public abstract class AbstractWrapper<T, R, Children extends AbstractWrapper<T,
         if (ArrayUtils.isEmpty(columns)) {
             return typedThis;
         }
-        return doIt(condition, GROUP_BY, () -> columnsToString(columns));
+        return doIt(condition, GROUP_BY,
+            () -> columns.length == 1 ? columnToString(columns[0]) : columnsToString(columns));
     }
 
     @Override
@@ -469,15 +470,6 @@ public abstract class AbstractWrapper<T, R, Children extends AbstractWrapper<T,
         return paramNameValuePairs;
     }
 
-    /**
-     * 多字段转换为逗号 "," 分割字符串
-     *
-     * @param columns 多字段
-     */
-    protected String columnsToString(R... columns) {
-        return Arrays.stream(columns).map(this::columnToString).collect(joining(StringPool.COMMA));
-    }
-
     /**
      * 获取 columnName
      */
@@ -488,6 +480,15 @@ public abstract class AbstractWrapper<T, R, Children extends AbstractWrapper<T,
         throw ExceptionUtils.mpe("not support this column !");
     }
 
+    /**
+     * 多字段转换为逗号 "," 分割字符串
+     *
+     * @param columns 多字段
+     */
+    protected String columnsToString(R... columns) {
+        return Arrays.stream(columns).map(this::columnToString).collect(joining(StringPool.COMMA));
+    }
+
     @Override
     @SuppressWarnings("all")
     public Children clone() {

+ 4 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/H2StudentMapperTest.java

@@ -93,6 +93,9 @@ class H2StudentMapperTest extends BaseTest {
         }
     }
 
+    /**
+     * group 或者 order 测试
+     */
     @Test
     void groupByOrderBy() {
         LambdaQueryWrapper<H2Student> wrapper = Wrappers.<H2Student>lambdaQuery().groupBy(H2Student::getAge);
@@ -100,4 +103,5 @@ class H2StudentMapperTest extends BaseTest {
         System.out.println(wrapper.getSqlSegment());
         System.out.println(wrapper2.getSqlSegment());
     }
+
 }