mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-07 00:58:24 +08:00
update docs
This commit is contained in:
parent
0613699c98
commit
5bb0f6dfab
@ -1,10 +1,10 @@
|
|||||||
# 一对多、多对一
|
# 一对多、多对一
|
||||||
|
|
||||||
在很多场景下,我们可能会用到 `一对多`、`一对一`、`多对一`等场景的关联查询,MyBatis-Flex 内置了相关的方法,用于支持此类场景。
|
在很多场景下,我们可能会用到 `一对多`、`一对一`、`多对一`、`多对多`等场景的关联查询,MyBatis-Flex 内置了相关的方法,用于支持此类场景。
|
||||||
|
|
||||||
## 代码示例
|
## 代码示例(多对多)
|
||||||
|
|
||||||
以下是文章的示例,一篇文章可能归属于多个分类。
|
以下是文章的示例,一篇文章可能归属于多个分类,一个类可以有多篇文章,需要用到中间表 `article_category_mapping`。
|
||||||
|
|
||||||
```java
|
```java
|
||||||
public class Article {
|
public class Article {
|
||||||
@ -21,23 +21,23 @@ public class Article {
|
|||||||
|
|
||||||
查询代码如下:
|
查询代码如下:
|
||||||
|
|
||||||
```java {10-13}
|
```java {10-14}
|
||||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||||
.select().form(ARTICLE)
|
.select().form(ARTICLE)
|
||||||
.where(ARTICLE.id.ge(100));
|
.where(ARTICLE.id.ge(100));
|
||||||
|
|
||||||
List<Article> articles = mapper.selectListByQuery(queryWrapper, fieldQueryBuilder -> {
|
List<Article> articles = mapper.selectListByQuery(queryWrapper
|
||||||
fieldQueryBuilder
|
, fieldQueryBuilder -> fieldQueryBuilder
|
||||||
.field(Article::getCategories) // 或者 .field("categories")
|
.field(Article::getCategories) // 或者 .field("categories")
|
||||||
.type(Category.class) //非集合,可以不指定 type
|
.type(Category.class) //非集合,自动读取 type,可以不指定 type
|
||||||
.queryWrapper(article -> QueryWrapper.create()
|
.queryWrapper(article -> QueryWrapper.create()
|
||||||
.select().from(CATEGORY)
|
.select().from(CATEGORY)
|
||||||
.where(CATEGORY.id.in(
|
.where(CATEGORY.id.in(
|
||||||
select("category_id").from("article_category_mapping")
|
select("category_id").from("article_category_mapping")
|
||||||
.where("article_id = ?", article.getId())
|
.where("article_id = ?", article.getId())
|
||||||
)
|
)
|
||||||
));
|
)
|
||||||
});
|
);
|
||||||
```
|
```
|
||||||
|
|
||||||
通过以上代码可以看出,`Article.categories` 字段的结果,来源于 `queryWrapper()` 方法构建的 `QueryWrapper`。
|
通过以上代码可以看出,`Article.categories` 字段的结果,来源于 `queryWrapper()` 方法构建的 `QueryWrapper`。
|
||||||
@ -85,4 +85,4 @@ select * from tb_category where id in
|
|||||||
## 其他场景
|
## 其他场景
|
||||||
|
|
||||||
通过以上内容看出,`Article` 的任何属性,都是可以通过传入 `FieldQueryBuilder` 来构建 `QueryWrapper` 进行再次查询,
|
通过以上内容看出,`Article` 的任何属性,都是可以通过传入 `FieldQueryBuilder` 来构建 `QueryWrapper` 进行再次查询,
|
||||||
这些不仅仅只适用于 `一对多`、`一对一`、`多对一`等场景。任何 `Article` 对象里的属性,需要二次查询赋值的,都是可以通过这种方式进行。
|
这些不仅仅只适用于 `一对多`、`一对一`、`多对一`、`多对多`等场景。任何 `Article` 对象里的属性,需要二次查询赋值的,都是可以通过这种方式进行。
|
||||||
@ -18,6 +18,7 @@ MyBatis-Flex 使用了 APT(Annotation Processing Tool)技术,在项目编
|
|||||||
| processor.enable | 全局启用apt开关 | true/false | true |
|
| processor.enable | 全局启用apt开关 | true/false | true |
|
||||||
| processor.mappersGenerateEnable | 开启 Mapper 自动生成 | true/false | false |
|
| processor.mappersGenerateEnable | 开启 Mapper 自动生成 | true/false | false |
|
||||||
| processor.genPath | APT 代码生成路径 | 合法的绝对或相对路径 | target/generated-sources/annotations |
|
| processor.genPath | APT 代码生成路径 | 合法的绝对或相对路径 | target/generated-sources/annotations |
|
||||||
|
| processor.allInTables | 是否所有的类都生成在 Tables 类里 | true/false | false |
|
||||||
| processor.tablesPackage | Tables 类名 | 合法的包名 | ${entityPackage}.table |
|
| processor.tablesPackage | Tables 类名 | 合法的包名 | ${entityPackage}.table |
|
||||||
| processor.tablesClassName | Tables 类名 | 合法的类名 | Tables |
|
| processor.tablesClassName | Tables 类名 | 合法的类名 | Tables |
|
||||||
| processor.baseMapperClass | 自定义 Mapper 的父类 | 全路径类名 | com.mybatisflex.core.BaseMapper |
|
| processor.baseMapperClass | 自定义 Mapper 的父类 | 全路径类名 | com.mybatisflex.core.BaseMapper |
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user