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; } 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..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; @@ -22,46 +24,111 @@ 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 int pageNumber = 1; + + /** + * 每页数据数量。 + */ + private int pageSize = FlexGlobalConfig.getDefaultConfig().getDefaultPageSize(); + + /** + * 总页数。 + */ 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 +136,6 @@ public class Page implements Serializable { this.setTotalRow(totalRow); } - /** * 获取当前页的数据。 * @@ -79,7 +145,6 @@ public class Page implements Serializable { return records; } - /** * 设置当前页的数据。 * @@ -101,7 +166,6 @@ public class Page implements Serializable { return pageNumber; } - /** * 设置当前页码。 * @@ -114,7 +178,6 @@ public class Page implements Serializable { this.pageNumber = pageNumber; } - /** * 获取当前每页数据数量。 * @@ -124,7 +187,6 @@ public class Page implements Serializable { return pageSize; } - /** * 设置当前每页数据数量。 * @@ -165,7 +227,6 @@ public class Page implements Serializable { return totalRow; } - /** * 设置数据总数。 * @@ -177,7 +238,7 @@ public class Page implements Serializable { } /** - * 计算总页码 + * 计算总页码。 */ private void calcTotalPage() { if (pageSize < 0 || totalRow < 0) { @@ -187,7 +248,6 @@ public class Page implements Serializable { } } - /** * 当前页是否为空。 * @@ -197,7 +257,6 @@ public class Page implements Serializable { return getTotalRow() == 0 || getPageNumber() > getTotalPage(); } - /** * 是否存在下一页。 * @@ -207,7 +266,6 @@ public class Page implements Serializable { return getTotalPage() != 0 && getPageNumber() < getTotalPage(); } - /** * 是否存在上一页。 * @@ -217,7 +275,6 @@ public class Page implements Serializable { return getPageNumber() > 1; } - /** * 获取当前分页偏移量。 * @@ -227,7 +284,6 @@ public class Page implements Serializable { return getPageSize() * (getPageNumber() - 1); } - /** * 设置是否自动优化 COUNT 查询语句。 * @@ -237,7 +293,6 @@ public class Page implements Serializable { this.optimizeCountQuery = optimizeCountQuery; } - /** * 是否自动优化 COUNT 查询语句(默认优化)。 * @@ -247,7 +302,6 @@ public class Page implements Serializable { return optimizeCountQuery; } - public Page map(Function mapper) { Page newPage = new Page<>(); newPage.pageNumber = pageNumber; @@ -265,7 +319,6 @@ public class Page implements Serializable { return newPage; } - @Override public String toString() { return "Page{" + 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()); }