From ad3c230845a00c6d2b1c61fa3cc9b5d1600cf8f0 Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Mon, 17 Jul 2023 11:52:25 +0800 Subject: [PATCH 1/4] style: optimize Page. --- .../com/mybatisflex/core/paginate/Page.java | 86 +++++++++++++++---- 1 file changed, 68 insertions(+), 18 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/paginate/Page.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/paginate/Page.java index 69a6a878..f0c0a802 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/paginate/Page.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/paginate/Page.java @@ -22,46 +22,110 @@ import java.util.List; import java.util.function.Function; /** - * 分页对象 + * 分页对象封装。 * - * @param 对象类型 + * @param 数据类型 + * @author 开源海哥 + * @author 王帅 */ public class Page implements Serializable { private static final long serialVersionUID = 1L; public static final int INIT_VALUE = -1; + /** + * 当前页数据。 + */ private List records = Collections.emptyList(); + + /** + * 当前页码。 + */ private int pageNumber = INIT_VALUE; + + /** + * 每页数据数量。 + */ private int pageSize = INIT_VALUE; + + /** + * 总页数。 + */ private long totalPage = INIT_VALUE; + + /** + * 总数据数量。 + */ private long totalRow = INIT_VALUE; + /** + * 是否优化分页查询 COUNT 语句。 + */ private boolean optimizeCountQuery = true; + /** + * 创建分页对象。 + * + * @param pageNumber 当前页码 + * @param pageSize 每页数据数量 + * @param 数据类型 + * @return 分页对象 + */ public static Page of(int pageNumber, int pageSize) { return new Page<>(pageNumber, pageSize); } + /** + * 创建分页对象。 + * + * @param pageNumber 当前页码 + * @param pageSize 每页数据数量 + * @param totalRow 总数据数量 + * @param 数据类型 + * @return 分页对象 + */ public static Page of(int pageNumber, int pageSize, long totalRow) { return new Page<>(pageNumber, pageSize, totalRow); } + /** + * 创建分页对象。 + */ public Page() { - } + /** + * 创建分页对象。 + * + * @param pageNumber 当前页码 + * @param pageSize 每页数据数量 + */ public Page(int pageNumber, int pageSize) { this.setPageNumber(pageNumber); this.setPageSize(pageSize); } + /** + * 创建分页对象。 + * + * @param pageNumber 当前页码 + * @param pageSize 每页数据数量 + * @param totalRow 总数居数量 + */ public Page(int pageNumber, int pageSize, long totalRow) { this.setPageNumber(pageNumber); this.setPageSize(pageSize); this.setTotalRow(totalRow); } + /** + * 创建分页对象。 + * + * @param records 当前页数据 + * @param pageNumber 当前页码 + * @param pageSize 每页数据数量 + * @param totalRow 总数居数量 + */ public Page(List records, int pageNumber, int pageSize, long totalRow) { this.setRecords(records); this.setPageNumber(pageNumber); @@ -69,7 +133,6 @@ public class Page implements Serializable { this.setTotalRow(totalRow); } - /** * 获取当前页的数据。 * @@ -79,7 +142,6 @@ public class Page implements Serializable { return records; } - /** * 设置当前页的数据。 * @@ -101,7 +163,6 @@ public class Page implements Serializable { return pageNumber; } - /** * 设置当前页码。 * @@ -114,7 +175,6 @@ public class Page implements Serializable { this.pageNumber = pageNumber; } - /** * 获取当前每页数据数量。 * @@ -124,7 +184,6 @@ public class Page implements Serializable { return pageSize; } - /** * 设置当前每页数据数量。 * @@ -165,7 +224,6 @@ public class Page implements Serializable { return totalRow; } - /** * 设置数据总数。 * @@ -177,7 +235,7 @@ public class Page implements Serializable { } /** - * 计算总页码 + * 计算总页码。 */ private void calcTotalPage() { if (pageSize < 0 || totalRow < 0) { @@ -187,7 +245,6 @@ public class Page implements Serializable { } } - /** * 当前页是否为空。 * @@ -197,7 +254,6 @@ public class Page implements Serializable { return getTotalRow() == 0 || getPageNumber() > getTotalPage(); } - /** * 是否存在下一页。 * @@ -207,7 +263,6 @@ public class Page implements Serializable { return getTotalPage() != 0 && getPageNumber() < getTotalPage(); } - /** * 是否存在上一页。 * @@ -217,7 +272,6 @@ public class Page implements Serializable { return getPageNumber() > 1; } - /** * 获取当前分页偏移量。 * @@ -227,7 +281,6 @@ public class Page implements Serializable { return getPageSize() * (getPageNumber() - 1); } - /** * 设置是否自动优化 COUNT 查询语句。 * @@ -237,7 +290,6 @@ public class Page implements Serializable { this.optimizeCountQuery = optimizeCountQuery; } - /** * 是否自动优化 COUNT 查询语句(默认优化)。 * @@ -247,7 +299,6 @@ public class Page implements Serializable { return optimizeCountQuery; } - public Page map(Function mapper) { Page newPage = new Page<>(); newPage.pageNumber = pageNumber; @@ -265,7 +316,6 @@ public class Page implements Serializable { return newPage; } - @Override public String toString() { return "Page{" + From 48cdc1cf62d6661371dc3ba4ec9b71a2146c54d3 Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Mon, 17 Jul 2023 12:13:19 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=AF=8F?= =?UTF-8?q?=E9=A1=B5=E6=95=B0=E6=8D=AE=E9=87=8F=E9=85=8D=E7=BD=AE=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mybatisflex/core/FlexGlobalConfig.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/FlexGlobalConfig.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/FlexGlobalConfig.java index b518aa08..7177885c 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/FlexGlobalConfig.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/FlexGlobalConfig.java @@ -74,6 +74,11 @@ public class FlexGlobalConfig { private Object normalValueOfLogicDelete = FlexConsts.LOGIC_DELETE_NORMAL; private Object deletedValueOfLogicDelete = FlexConsts.LOGIC_DELETE_DELETED; + /** + * 分页查询时,默认每页显示的数据数量。 + */ + private int defaultPageSize = 10; + public boolean isPrintBanner() { return printBanner; } @@ -307,6 +312,14 @@ public class FlexGlobalConfig { this.deletedValueOfLogicDelete = deletedValueOfLogicDelete; } + public int getDefaultPageSize() { + return defaultPageSize; + } + + public void setDefaultPageSize(int defaultPageSize) { + this.defaultPageSize = defaultPageSize; + } + public static ConcurrentHashMap getGlobalConfigs() { return globalConfigs; } From d2022d30dfe153446a9686f3d3b10c2f03a28eea Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Mon, 17 Jul 2023 12:14:02 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20=E4=B8=BA=20pageNumber=20=E5=92=8C?= =?UTF-8?q?=20pageSize=20=E6=B7=BB=E5=8A=A0=E9=BB=98=E8=AE=A4=E5=80=BC?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mybatisflex/core/paginate/Page.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/paginate/Page.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/paginate/Page.java index f0c0a802..d14b50bc 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/paginate/Page.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/paginate/Page.java @@ -15,6 +15,8 @@ */ package com.mybatisflex.core.paginate; +import com.mybatisflex.core.FlexGlobalConfig; + import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; @@ -31,6 +33,7 @@ import java.util.function.Function; public class Page implements Serializable { private static final long serialVersionUID = 1L; + public static final int INIT_VALUE = -1; /** @@ -41,12 +44,12 @@ public class Page implements Serializable { /** * 当前页码。 */ - private int pageNumber = INIT_VALUE; + private int pageNumber = 1; /** * 每页数据数量。 */ - private int pageSize = INIT_VALUE; + private int pageSize = FlexGlobalConfig.getDefaultConfig().getDefaultPageSize(); /** * 总页数。 From 3953b4abd882b7ba0d96365673fac1516500ddee Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Mon, 17 Jul 2023 12:14:30 +0800 Subject: [PATCH 4/4] =?UTF-8?q?test:=20=E6=B5=8B=E8=AF=95=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E6=9F=A5=E8=AF=A2=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/java/com/mybatisflex/test/mapper/UserMapperTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mybatis-flex-test/mybatis-flex-spring-boot-test/src/test/java/com/mybatisflex/test/mapper/UserMapperTest.java b/mybatis-flex-test/mybatis-flex-spring-boot-test/src/test/java/com/mybatisflex/test/mapper/UserMapperTest.java index 4d6b9315..2bd437bb 100644 --- a/mybatis-flex-test/mybatis-flex-spring-boot-test/src/test/java/com/mybatisflex/test/mapper/UserMapperTest.java +++ b/mybatis-flex-test/mybatis-flex-spring-boot-test/src/test/java/com/mybatisflex/test/mapper/UserMapperTest.java @@ -249,13 +249,13 @@ class UserMapperTest { .leftJoin(USER_ROLE).as("ur").on(USER_ROLE.USER_ID.eq(USER.USER_ID)) .leftJoin(ROLE).as("r").on(USER_ROLE.ROLE_ID.eq(ROLE.ROLE_ID)); System.err.println(queryWrapper.toSQL()); - Page page = Page.of(1, 1); + Page page = new Page<>(); page.setOptimizeCountQuery(false); int pageNumber = 0; do { - page.setPageNumber(page.getPageNumber() + 1); page = userMapper.paginateAs(page, queryWrapper, UserVO.class); System.err.println(page); + page.setPageNumber(page.getPageNumber() + 1); } while (page.hasNext()); }