Parcourir la source

Revert "FIX https://github.com/baomidou/mybatis-plus/issues/4426"

This reverts commit 86bd90113541b54033bd4a7640210dc4a6758ee1.
VampireAchao il y a 3 ans
Parent
commit
9eeded20bb

+ 0 - 28
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/handler/PageResultHandler.java

@@ -1,28 +0,0 @@
-package com.baomidou.mybatisplus.extension.plugins.handler;
-
-import org.apache.ibatis.session.ResultContext;
-import org.apache.ibatis.session.ResultHandler;
-
-import lombok.Data;
-
-/**
- * 用于分页时传入自定义ResultHandler场景
- *
- * @author VampireAchao
- * @since 2022-04-19
- */
-@Data
-public abstract class PageResultHandler<T> implements ResultHandler<T> {
-
-    /**
-     * 分页时返回count条数
-     */
-    protected long count;
-
-    @Override
-    public void handleResult(ResultContext<? extends T> resultContext) {
-        if (resultContext.getResultObject() instanceof Long) {
-            this.count = Long.parseLong(resultContext.getResultObject().toString());
-        }
-    }
-}

+ 23 - 49
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/inner/PaginationInnerInterceptor.java

@@ -15,45 +15,16 @@
  */
 package com.baomidou.mybatisplus.extension.plugins.inner;
 
-import java.sql.SQLException;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Properties;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.stream.Collectors;
-
-import org.apache.ibatis.cache.CacheKey;
-import org.apache.ibatis.executor.Executor;
-import org.apache.ibatis.logging.Log;
-import org.apache.ibatis.logging.LogFactory;
-import org.apache.ibatis.mapping.BoundSql;
-import org.apache.ibatis.mapping.MappedStatement;
-import org.apache.ibatis.mapping.ParameterMapping;
-import org.apache.ibatis.mapping.ResultMap;
-import org.apache.ibatis.session.Configuration;
-import org.apache.ibatis.session.ResultHandler;
-import org.apache.ibatis.session.RowBounds;
-
 import com.baomidou.mybatisplus.annotation.DbType;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
-import com.baomidou.mybatisplus.core.toolkit.ClassUtils;
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.core.toolkit.Constants;
-import com.baomidou.mybatisplus.core.toolkit.ParameterUtils;
-import com.baomidou.mybatisplus.core.toolkit.PluginUtils;
-import com.baomidou.mybatisplus.core.toolkit.StringPool;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.baomidou.mybatisplus.extension.plugins.handler.PageResultHandler;
+import com.baomidou.mybatisplus.core.toolkit.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.DialectFactory;
 import com.baomidou.mybatisplus.extension.plugins.pagination.DialectModel;
 import com.baomidou.mybatisplus.extension.plugins.pagination.dialects.IDialect;
 import com.baomidou.mybatisplus.extension.toolkit.JdbcUtils;
 import com.baomidou.mybatisplus.extension.toolkit.PropertyMapper;
 import com.baomidou.mybatisplus.extension.toolkit.SqlParserUtils;
-
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import net.sf.jsqlparser.JSQLParserException;
@@ -62,19 +33,23 @@ import net.sf.jsqlparser.expression.Expression;
 import net.sf.jsqlparser.parser.CCJSqlParserUtil;
 import net.sf.jsqlparser.schema.Column;
 import net.sf.jsqlparser.schema.Table;
-import net.sf.jsqlparser.statement.select.Distinct;
-import net.sf.jsqlparser.statement.select.FromItem;
-import net.sf.jsqlparser.statement.select.GroupByElement;
-import net.sf.jsqlparser.statement.select.Join;
-import net.sf.jsqlparser.statement.select.OrderByElement;
-import net.sf.jsqlparser.statement.select.PlainSelect;
-import net.sf.jsqlparser.statement.select.Select;
-import net.sf.jsqlparser.statement.select.SelectBody;
-import net.sf.jsqlparser.statement.select.SelectExpressionItem;
-import net.sf.jsqlparser.statement.select.SelectItem;
-import net.sf.jsqlparser.statement.select.SetOperationList;
-import net.sf.jsqlparser.statement.select.SubSelect;
-import net.sf.jsqlparser.statement.select.WithItem;
+import net.sf.jsqlparser.statement.select.*;
+import org.apache.ibatis.cache.CacheKey;
+import org.apache.ibatis.executor.Executor;
+import org.apache.ibatis.logging.Log;
+import org.apache.ibatis.logging.LogFactory;
+import org.apache.ibatis.mapping.BoundSql;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.mapping.ParameterMapping;
+import org.apache.ibatis.mapping.ResultMap;
+import org.apache.ibatis.session.Configuration;
+import org.apache.ibatis.session.ResultHandler;
+import org.apache.ibatis.session.RowBounds;
+
+import java.sql.SQLException;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
 
 /**
  * 分页拦截器
@@ -159,10 +134,6 @@ public class PaginationInnerInterceptor implements InnerInterceptor {
         CacheKey cacheKey = executor.createCacheKey(countMs, parameter, rowBounds, countSql);
         List<Object> result = executor.query(countMs, parameter, rowBounds, resultHandler, cacheKey, countSql);
         long total = 0;
-        if (resultHandler instanceof PageResultHandler) {
-            // FIX https://github.com/baomidou/mybatis-plus/issues/4426
-            total = ((PageResultHandler) resultHandler).getCount();
-        }
         if (CollectionUtils.isNotEmpty(result)) {
             // 个别数据库 count 没数据不会返回 0
             Object o = result.get(0);
@@ -302,8 +273,11 @@ public class PaginationInnerInterceptor implements InnerInterceptor {
             List<OrderByElement> orderBy = plainSelect.getOrderByElements();
 
             if (CollectionUtils.isNotEmpty(orderBy)) {
-                boolean canClean = groupBy == null;
-                // 包含groupBy 不去除orderBy
+                boolean canClean = true;
+                if (groupBy != null) {
+                    // 包含groupBy 不去除orderBy
+                    canClean = false;
+                }
                 if (canClean) {
                     for (OrderByElement order : orderBy) {
                         // order by 里带参数,不去除order by