From b34733cfda1965a3ead56d28d337c344f5e2c1fb Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Mon, 31 Jul 2023 16:15:11 +0800 Subject: [PATCH] =?UTF-8?q?doc:=20=E8=A1=A5=E5=85=85=20Active=20Record=20?= =?UTF-8?q?=E5=A4=9A=E7=A7=8D=E6=96=B9=E5=BC=8F=E5=85=B3=E8=81=94=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/zh/base/active-record.md | 44 +++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/docs/zh/base/active-record.md b/docs/zh/base/active-record.md index aaa774ee..f50178bf 100644 --- a/docs/zh/base/active-record.md +++ b/docs/zh/base/active-record.md @@ -137,30 +137,54 @@ Account.create() .page(Page.of(1,10)); ``` -## 多表关联 +## 关联查询 -`Model` 提供了 `joins` 与 `@Relation` 两种方式实现多表关联查询,例如:用户与角色的关系: +`Model` 提供了三种方式实现多表关联查询,例如:用户与角色的关系: -- 通过 [joins](./relations-query.md#方案-3-join-query) 联表方式查询数据: +- (默认)通过 [Joins Query](./relations-query.md#方案-3-join-query) 联表方式查询数据: ```java User.create() .select(USER.ALL_COLUMNS,ROLE.ALL_COLUMNS) .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)) - .where(USER.USER_ID.eq(2)) + .where(USER.USER_ID.eq(1)) .one(); ``` -> 更多关于 `left join` 等 join 查询,请请点击 [这里](./relations-query.md#方案-3-join-query); +> 获取更多关于 `Joins Query` 的信息,请点击 [这里](./relations-query.md#方案-3-join-query) - -- 通过 [@Relation](./relations-query.md#方案-1relations-注解) 相关注解查询数据: +- 通过 [Relations Query](./relations-query.md#方案-1relations-注解) 的方式查询数据: ```java User.create() - .where(USER.USER_ID.eq(2)) - .oneWithRelations(); + .where(USER.USER_ID.eq(1)) + .withRelations() // 使用 Relations Query 的方式进行关联查询。 + .maxDepth(3) // 设置父子关系查询中,默认的递归查询深度。 + .ignoreRelations("orderList") // 忽略查询部分 Relations 注解标记的属性。 + .extraCondition("id",100) // 添加额外的 Relations 查询条件。 + .one(); ``` -> 以上是用于查询 `一对多`、`多对多` 等场景,更多信息请点击 [这里](./relations-query.md#方案-1-relations-注解); +> 获取更多关于 `Relations Query` 的信息,请点击 [这里](./relations-query.md#方案-1relations-注解) + +- 通过 [Fields Query](./relations-query.md#方案-1relations-注解) 的方式查询数据: + +```java +User.create() + .where(USER.USER_ID.eq(1)) + .withFields() // 使用 Fields Query 的方式进行关联查询。 + .fieldMapping(User::getRoleList,user-> // 设置属性对应的 QueryWrapper 查询。 + QueryWrapper.create() + .select() + .from(ROLE) + .where(ROLE.ROLE_ID.in( + QueryWrapper.create() + .select(USER_ROLE.ROLE_ID) + .from(USER_ROLE) + .where(USER_ROLE.USER_ID.eq(user.getUserId())) + ))) + .one(); +``` + +> 获取更多关于 `Fields Query` 的信息,请点击 [这里](./relations-query.md#方案-2field-query)