From d7131f48e7f78c1e24c7cbc934e28d1cb49a37af Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Tue, 8 Aug 2023 16:28:42 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=20Relation=20?= =?UTF-8?q?=E6=B3=A8=E8=A7=A3=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 --- .../activerecord/query/RelationsQuery.java | 116 +++++------------- 1 file changed, 32 insertions(+), 84 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/activerecord/query/RelationsQuery.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/activerecord/query/RelationsQuery.java index fe11e913..86254ef6 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/activerecord/query/RelationsQuery.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/activerecord/query/RelationsQuery.java @@ -17,10 +17,7 @@ package com.mybatisflex.core.activerecord.query; import com.mybatisflex.core.activerecord.Model; -import com.mybatisflex.core.paginate.Page; -import com.mybatisflex.core.relation.RelationManager; - -import java.util.List; +import com.mybatisflex.core.query.RelationsBuilder; /** * 使用 {@code Relations Query} 的方式进行关联查询。 @@ -28,102 +25,53 @@ import java.util.List; * @author 王帅 * @since 2023-07-30 */ -public class RelationsQuery> extends AbstractQuery { +public class RelationsQuery> extends RelationsBuilder { public RelationsQuery(Model model) { super(model); } - /** - * 忽略查询部分 {@code Relations} 注解标记的属性。 - * - * @param fields 属性 - * @return {@code Relations} 查询构建 - */ + @Override public RelationsQuery ignoreRelations(String... fields) { - RelationManager.addIgnoreRelations(fields); - return this; - } - - /** - * 设置父子关系查询中,默认的递归查询深度。 - * - * @param maxDepth 查询深度 - * @return {@code Relations} 查询构建 - */ - public RelationsQuery maxDepth(int maxDepth) { - RelationManager.setMaxDepth(maxDepth); - return this; - } - - /** - * 添加额外的 {@code Relations} 查询条件。 - * - * @param key 键 - * @param value 值 - * @return {@code Relations} 查询构建 - */ - public RelationsQuery extraConditionParam(String key, Object value) { - RelationManager.addExtraConditionParam(key, value); + super.ignoreRelations(fields); return this; } @Override + public RelationsQuery maxDepth(int maxDepth) { + super.maxDepth(maxDepth); + return this; + } + + @Override + public RelationsQuery extraConditionParam(String key, Object value) { + super.extraConditionParam(key, value); + return this; + } + + protected Object[] pkValues() { + // 懒加载,实际用到的时候才会生成 主键值 + return ((Model) delegate).pkValues(); + } + + /** + * 根据主键查询一条数据。 + * + * @return 一条数据 + */ public T oneById() { return baseMapper().selectOneWithRelationsById(pkValues()); } - @Override + /** + * 根据主键查询一条数据,返回的数据为 asType 类型。 + * + * @param asType 接收数据类型 + * @param 接收数据类型 + * @return 一条数据 + */ public R oneByIdAs(Class asType) { return baseMapper().selectOneWithRelationsByIdAs(pkValues(), asType); } - /** - * {@inheritDoc} - */ - @Override - public T one() { - return baseMapper().selectOneWithRelationsByQuery(queryWrapper()); - } - - /** - * {@inheritDoc} - */ - @Override - public R oneAs(Class asType) { - return baseMapper().selectOneWithRelationsByQueryAs(queryWrapper(), asType); - } - - /** - * {@inheritDoc} - */ - @Override - public List list() { - return baseMapper().selectListWithRelationsByQuery(queryWrapper()); - } - - /** - * {@inheritDoc} - */ - @Override - public List listAs(Class asType) { - return baseMapper().selectListWithRelationsByQueryAs(queryWrapper(), asType); - } - - /** - * {@inheritDoc} - */ - @Override - public Page page(Page page) { - return baseMapper().paginateWithRelations(page, queryWrapper()); - } - - /** - * {@inheritDoc} - */ - @Override - public Page pageAs(Page page, Class asType) { - return baseMapper().paginateWithRelationsAs(page, queryWrapper(), asType); - } - }