From ddbe2538a99d2aa4010e49311e5602ce3090d697 Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Mon, 31 Jul 2023 16:14:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A4=9A=E7=A7=8D=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E5=85=B3=E8=81=94=E6=9F=A5=E8=AF=A2=E6=9E=84=E5=BB=BA=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatisflex/core/activerecord/Model.java | 51 ++++++++++++++----- 1 file changed, 38 insertions(+), 13 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/activerecord/Model.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/activerecord/Model.java index 93ad42a8..44604f3d 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/activerecord/Model.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/activerecord/Model.java @@ -16,7 +16,9 @@ package com.mybatisflex.core.activerecord; +import com.mybatisflex.core.activerecord.query.FieldsQuery; import com.mybatisflex.core.activerecord.query.QueryModel; +import com.mybatisflex.core.activerecord.query.RelationsQuery; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.util.SqlUtil; @@ -92,14 +94,16 @@ public abstract class Model> } /** - * 根据实体类构建的条件获取一条数据,并查询 {@code @Relation} 注解关联的内容。 + * 根据实体类构建的条件获取一条数据,返回的数据为 asType 类型。 * + * @param asType 接收数据类型 * @return 数据 */ - public T oneWithRelations() { - return baseMapper().selectOneWithRelationsByQuery(queryWrapper().limit(1)); + public R oneAs(Class asType) { + return baseMapper().selectOneByQueryAs(queryWrapper(), asType); } + /** * 根据实体类构建的条件获取一条数据,并封装为 {@link Optional} 返回。 * @@ -110,12 +114,13 @@ public abstract class Model> } /** - * 根据实体类构建的条件获取一条数据,并查询 {@code @Relation} 注解关联的内容,封装为 {@link Optional} 返回。 + * 根据实体类构建的条件获取一条数据,返回的数据为 asType 类型,并封装为 {@link Optional} 返回。 * + * @param asType 接收数据类型 * @return 数据 */ - public Optional oneWithRelationsOpt() { - return Optional.ofNullable(oneWithRelations()); + public Optional oneAsOpt(Class asType) { + return Optional.ofNullable(oneAs(asType)); } /** @@ -128,12 +133,13 @@ public abstract class Model> } /** - * 根据实体类构建的条件获取多条数据,并查询 {@code @Relation} 注解关联的内容。 + * 根据实体类构建的条件获取多条数据,返回的数据为 asType 类型。 * + * @param asType 接收数据类型 * @return 数据列表 */ - public List listWithRelations() { - return baseMapper().selectListWithRelationsByQuery(queryWrapper()); + public List listAs(Class asType) { + return baseMapper().selectListByQueryAs(queryWrapper(), asType); } /** @@ -147,13 +153,32 @@ public abstract class Model> } /** - * 根据实体类构建的条件获取分页数据,并查询 {@code @Relation} 注解关联的内容。 + * 根据实体类构建的条件获取分页数据,返回的数据为 asType 类型。 * - * @param page 分页对象 + * @param page 分页对象 + * @param asType 接收数据类型 * @return 分页数据 */ - public Page pageWithRelations(Page page) { - return baseMapper().paginateWithRelations(page, queryWrapper()); + public Page pageAs(Page page, Class asType) { + return baseMapper().paginateAs(page, queryWrapper(), asType); + } + + /** + * 使用 {@code Fields Query} 的方式进行关联查询。 + * + * @return {@code Fields Query} 查询 + */ + public FieldsQuery withFields() { + return new FieldsQuery<>(this); + } + + /** + * 使用 {@code Relations Query} 的方式进行关联查询。 + * + * @return {@code Relations Query} 查询 + */ + public RelationsQuery withRelations() { + return new RelationsQuery<>(this); } }