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

调整分页参数提取.

nieqiuqiu 5 роки тому
батько
коміт
08b3e2c4d5

+ 11 - 3
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/override/MybatisMapperMethod.java

@@ -83,15 +83,23 @@ public class MybatisMapperMethod {
                 } else {
                 } else {
                     Object param = method.convertArgsToSqlCommandParam(args);
                     Object param = method.convertArgsToSqlCommandParam(args);
                     // TODO 这里下面改了
                     // TODO 这里下面改了
-                    if (IPage.class.isAssignableFrom(method.getReturnType()) && args != null
-                        && IPage.class.isAssignableFrom(args[0].getClass())) {
+                    if (IPage.class.isAssignableFrom(method.getReturnType())) {
+                        assert args != null;
+                        IPage<?> page = null;
+                        for (Object arg : args) {
+                            if (arg instanceof IPage) {
+                                page = (IPage) arg;
+                                break;
+                            }
+                        }
+                        assert page != null;
                         result = executeForIPage(sqlSession, args);
                         result = executeForIPage(sqlSession, args);
                         if (result instanceof CachePage) {
                         if (result instanceof CachePage) {
                             CachePage cachePage = (CachePage) result;
                             CachePage cachePage = (CachePage) result;
                             result = cachePage.getPage();
                             result = cachePage.getPage();
                         } else {
                         } else {
                             List list = (List<Object>) result;
                             List list = (List<Object>) result;
-                            result = ((IPage<?>) args[0]).setRecords(list);
+                            result = page.setRecords(list);
                         }
                         }
                         // TODO 这里上面改了
                         // TODO 这里上面改了
                     } else {
                     } else {

+ 6 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/H2UserMapperTest.java

@@ -202,4 +202,10 @@ class H2UserMapperTest extends BaseTest {
         Assertions.assertEquals(1, selectObjs.size());
         Assertions.assertEquals(1, selectObjs.size());
     }
     }
 
 
+    @Test
+    void test(){
+        Page<H2User> page = new Page<>();
+        userMapper.testPage1(new H2User(), page);
+        userMapper.testPage2(page, new H2User());
+    }
 }
 }

+ 6 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/mapper/H2UserMapper.java

@@ -18,6 +18,7 @@ package com.baomidou.mybatisplus.test.h2.mapper;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Insert;
 import org.apache.ibatis.annotations.Insert;
 import org.apache.ibatis.annotations.Options;
 import org.apache.ibatis.annotations.Options;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
@@ -101,4 +102,9 @@ public interface H2UserMapper extends SuperMapper<H2User> {
     @Options(statementType = StatementType.CALLABLE)
     @Options(statementType = StatementType.CALLABLE)
     String testCall();
     String testCall();
 
 
+    @Select("select * from h2user")
+    IPage<H2User> testPage1(@Param(value = "user") H2User h2User, @Param(value = "page") Page page);
+
+    @Select("select * from h2user")
+    IPage<H2User> testPage2(@Param(value = "user") Page page, @Param(value = "page") H2User h2User);
 }
 }