瀏覽代碼

解决 Page ascs,descs 异常

hubin 7 年之前
父節點
當前提交
9a72d105be

+ 4 - 4
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/IPage.java

@@ -30,23 +30,23 @@ public interface IPage<T> {
 
     /**
      * <p>
-     * 降序字段集合
+     * 降序字段数组
      * </p>
      *
      * @return
      */
-    default List<String> descs() {
+    default String[] descs() {
         return null;
     }
 
     /**
      * <p>
-     * 升序字段集合
+     * 升序字段数组
      * </p>
      *
      * @return
      */
-    default List<String> ascs() {
+    default String[] ascs() {
         return null;
     }
 

+ 13 - 5
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/sql/SqlHelper.java

@@ -29,6 +29,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.TableInfo;
+import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -189,13 +190,20 @@ public class SqlHelper {
      * @param wrapper SQL包装对象
      */
     public static Wrapper<?> fillWrapper(IPage<?> page, Wrapper<?> wrapper) {
-        if (null == page || (CollectionUtils.isEmpty(page.ascs())
-            && CollectionUtils.isEmpty(page.ascs())
-            && ObjectUtils.isEmpty(page.condition()))) {
+        if (null == page) {
             return wrapper;
         }
-        // wrapper 不存创建一个 Condition
-        QueryWrapper qw = new QueryWrapper<>();
+        if (ArrayUtils.isEmpty(page.ascs())
+            && ArrayUtils.isEmpty(page.ascs())
+            && ObjectUtils.isEmpty(page.condition())) {
+            return wrapper;
+        }
+        QueryWrapper qw;
+        if (null == wrapper) {
+            qw = new QueryWrapper<>();
+        } else {
+            qw = (QueryWrapper) wrapper;
+        }
         // 排序
         qw.orderByAsc(page.ascs());
         qw.orderByDesc(page.descs());

+ 15 - 16
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/pagination/Page.java

@@ -16,12 +16,11 @@
 package com.baomidou.mybatisplus.extension.plugins.pagination;
 
 import java.io.Serializable;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 
 /**
  * <p>
@@ -53,16 +52,16 @@ public class Page<T> implements IPage<T>, Serializable {
     private long current = 1;
     /**
      * <p>
-     * SQL 排序 ASC 集合
+     * SQL 排序 ASC 数组
      * </p>
      */
-    private List<String> ascs;
+    private String[] ascs;
     /**
      * <p>
-     * SQL 排序 DESC 集合
+     * SQL 排序 DESC 数组
      * </p>
      */
-    private List<String> descs;
+    private String[] descs;
 
 
     public Page() {
@@ -156,36 +155,36 @@ public class Page<T> implements IPage<T>, Serializable {
     }
 
     @Override
-    public List<String> ascs() {
+    public String[] ascs() {
         return ascs;
     }
 
     public Page<T> setAscs(List<String> ascs) {
-        this.ascs = ascs;
+        if (CollectionUtils.isNotEmpty(ascs)) {
+            this.ascs = (String[]) ascs.toArray();
+        }
         return this;
     }
 
     public Page<T> setAscs(String... ascs) {
-        if (ArrayUtils.isNotEmpty(ascs)) {
-            this.ascs = Arrays.asList(ascs);
-        }
+        this.ascs = ascs;
         return this;
     }
 
     @Override
-    public List<String> descs() {
+    public String[] descs() {
         return descs;
     }
 
     public Page<T> setDescs(List<String> descs) {
-        this.descs = descs;
+        if (CollectionUtils.isNotEmpty(descs)) {
+            this.descs = (String[]) descs.toArray();
+        }
         return this;
     }
 
     public Page<T> setDescs(String... descs) {
-        if (ArrayUtils.isNotEmpty(descs)) {
-            this.descs = Arrays.asList(descs);
-        }
+        this.descs = descs;
         return this;
     }