From 43372dc511650fa520c2e3d67a94640cf7ecb3e3 Mon Sep 17 00:00:00 2001 From: guanghui Date: Fri, 7 Nov 2025 11:00:58 +0800 Subject: [PATCH] =?UTF-8?q?`selectJoinPage`=20=E6=96=B9=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=B8=A6=E6=9C=89=E6=8E=92=E5=BA=8F=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E7=9A=84=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更新了 BaseMapperX 接口的文档说明,使其更加清晰。新增了一个 `selectJoinPage` 方法,支持带有排序参数的分页查询,并兼容不分页的情况。 --- .../mybatis/core/mapper/BaseMapperX.java | 29 +++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java b/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java index 52ca947cc5..cf7b7fe1ba 100644 --- a/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java +++ b/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java @@ -24,10 +24,10 @@ import java.util.Collection; import java.util.List; /** - * 在 MyBatis Plus 的 BaseMapper 的基础上拓展,提供更多的能力 + * BaseMapperX 是一个泛型接口,继承自 MPJBaseMapper,用于提供一系列便捷的数据库操作方法。 + * 该接口主要包含分页查询、单条记录查询、多条记录查询、批量插入等常用操作。 * - * 1. {@link BaseMapper} 为 MyBatis Plus 的基础接口,提供基础的 CRUD 能力 - * 2. {@link MPJBaseMapper} 为 MyBatis Plus Join 的基础接口,提供连表 Join 能力 + * @param 实体类型 */ public interface BaseMapperX extends MPJBaseMapper { @@ -68,6 +68,29 @@ public interface BaseMapperX extends MPJBaseMapper { return new PageResult<>(mpPage.getRecords(), mpPage.getTotal()); } + /** + * 执行分页查询并返回结果。 + * + * @param pageParam 分页参数,包含页码、每页条数和排序字段信息。如果 pageSize 为 {@link PageParam#PAGE_SIZE_NONE},则不分页,直接查询所有数据。 + * @param clazz 结果集的类类型 + * @param lambdaWrapper MyBatis Plus Join 查询条件包装器 + * @param 结果集的泛型类型 + * @return 返回分页查询的结果,包括总记录数和当前页的数据列表 + */ + default PageResult selectJoinPage(SortablePageParam pageParam, Class clazz, MPJLambdaWrapper lambdaWrapper) { + // 特殊:不分页,直接查询全部 + if (PageParam.PAGE_SIZE_NONE.equals(pageParam.getPageSize())) { + List list = selectJoinList(clazz, lambdaWrapper); + return new PageResult<>(list, (long) list.size()); + } + + // MyBatis Plus Join 查询 + IPage mpPage = MyBatisUtils.buildPage(pageParam, pageParam.getSortingFields()); + mpPage = selectJoinPage(mpPage, clazz, lambdaWrapper); + // 转换返回 + return new PageResult<>(mpPage.getRecords(), mpPage.getTotal()); + } + default PageResult selectJoinPage(PageParam pageParam, Class resultTypeClass, MPJBaseJoin joinQueryWrapper) { IPage mpPage = MyBatisUtils.buildPage(pageParam); selectJoinPage(mpPage, resultTypeClass, joinQueryWrapper);