docs: update docs

This commit is contained in:
开源海哥 2023-07-25 15:02:01 +08:00
parent 1946d4549f
commit 6c4a1f4e62
4 changed files with 35 additions and 17 deletions

View File

@ -60,8 +60,8 @@ export default defineConfig({
{text: '基础查询', link: '/zh/base/query'}, {text: '基础查询', link: '/zh/base/query'},
{text: '关联查询', link: '/zh/base/relations-query'}, {text: '关联查询', link: '/zh/base/relations-query'},
{text: '批量操作', link: '/zh/base/batch'}, {text: '批量操作', link: '/zh/base/batch'},
{text: '链式操作', link: '/zh/base/chain'},
{text: 'QueryWrapper', link: '/zh/base/querywrapper'}, {text: 'QueryWrapper', link: '/zh/base/querywrapper'},
{text: 'QueryWrapperChain', link: '/zh/base/query-wrapper-chain'},
{text: 'Db + Row', link: '/zh/base/db-row'}, {text: 'Db + Row', link: '/zh/base/db-row'},
{text: 'Active Record', link: '/zh/base/active-record'}, {text: 'Active Record', link: '/zh/base/active-record'},
{text: 'IService', link: '/zh/base/service'}, {text: 'IService', link: '/zh/base/service'},

View File

@ -5,13 +5,12 @@
模式中对象中既有持久存储的数据也有针对数据的操作。Active Record 模式把数据存取逻辑作为对象的一部分,处理对象的用户知道如何把数据写入数据库,还知道如何从数据库中读出数据。 模式中对象中既有持久存储的数据也有针对数据的操作。Active Record 模式把数据存取逻辑作为对象的一部分,处理对象的用户知道如何把数据写入数据库,还知道如何从数据库中读出数据。
在 MyBatis-Flex 中实现 Active Record 在 MyBatis-Flex 中实现 Active Record
功能十分简单,只需继承 [Model](https://gitee.com/mybatis-flex/mybatis-flex/blob/main/mybatis-flex-core/src/main/java/com/mybatisflex/core/activerecord/Model.java) 功能十分简单,只需让 Entity 类继承 [Model](https://gitee.com/mybatis-flex/mybatis-flex/blob/main/mybatis-flex-core/src/main/java/com/mybatisflex/core/activerecord/Model.java)
即可。 即可。
::: tip 注意事项 ::: tip 注意事项
- 使用 Active Record 功能时,项目中必须注入对应实体类的 BaseMapper 对象。
- 使用 Active Record 功能时,项目中必须注入对应实体类的 BaseMapper 对象! - 如果不想手动创建 Mapper 接口,可以使用 [代码生成器](../others/codegen.md) 或 [APT](../others/apt.md#配置文件和选项) 辅助生成。
- 如果不想手动创建 Mapper 接口,可以使用 [APT](../others/apt.md#配置文件和选项) 辅助生成。
::: :::
## 使用示例 ## 使用示例
@ -35,7 +34,6 @@ public class Account extends Model<Account> {
private String userName; private String userName;
private Integer age; private Integer age;
private Date birthday; private Date birthday;
} }
``` ```
@ -50,7 +48,6 @@ public class AccountController {
public boolean save(@RequestBody Account account) { public boolean save(@RequestBody Account account) {
return account.save(); return account.save();
} }
} }
``` ```

View File

@ -1,7 +1,9 @@
# QueryWrapperChain # 链式操作
`QueryWrapperChain.java` 是一个对 `QueryWrapper` 进行链式调用封装的一个类,在 Service 中, 在 MyBatis-Flex 中,内置了 `QueryChain.java``UpdateChain.java` 用于对数据进行链式查询操作和链式数据操作(修改和删除)。
我们可以调用 `service.queryChain()` 获得该实例。
## QueryChain 示例
例如,查询文章列表代码如下: 例如,查询文章列表代码如下:
@ -24,29 +26,48 @@ class ArticleServiceTest {
} }
``` ```
若不是在 Service 中,我们也可以通过 `QueryWrapperChain.create` 方法,自己创建一个 `QueryWrapperChain` 实例,代码如下: 若不是在 Service 中,我们也可以通过 `QueryChain.create` 方法,自己创建一个 `QueryChain` 实例,代码如下:
```java ```java
List<Article> articles = QueryWrapperChain.create(mapper) List<Article> articles = QueryChain.of(mapper)
.select(ARTICLE.ALL_COLUMNS) .select(ARTICLE.ALL_COLUMNS)
.from(ARTICLE) .from(ARTICLE)
.where(ARTICLE.ID.ge(100)) .where(ARTICLE.ID.ge(100))
.list(); .list();
``` ```
## QueryWrapperChain 的方法 ## UpdateChain 示例
假设我们要更新 `Account``userName` 为 "`张三`",更新年龄在之前的基础上加 1更新代码如下
```java
@Test
public void testUpdateChain() {
UpdateChain.of(Account.class)
.set(Account::getUserName, "张三")
.setRaw(Account::getAge, "age + 1")
.where(Account::getId).eq(1)
.update();
}
```
以上方法调用时MyBatis-Flex 内部执行的 SQL 如下:
```sql
UPDATE `tb_account` SET `user_name` = '张三' , `age` = age + 1
WHERE `id` = 1
```
## QueryChain 的方法
- one():获取一条数据 - one():获取一条数据
- list():获取多条数据 - list():获取多条数据
- page():分页查询 - page():分页查询
- obj():当 SQL 查询只返回 1 列数据的时候,且只有 1 条数据时,可以使用此方法 - obj():当 SQL 查询只返回 1 列数据的时候,且只有 1 条数据时,可以使用此方法
- objList():当 SQL 查询只返回 1 列数据的时候,可以使用此方法 - objList():当 SQL 查询只返回 1 列数据的时候,可以使用此方法
- remove():删除数据
- update(entity):更新数据
- count():查询数据条数 - count():查询数据条数
- exists():是否存在,判断 count 是否大于 0 - exists():是否存在,判断 count 是否大于 0
## 扩展方法 ## UpdateChain 扩展方法
### `one()` 系列方法 ### `one()` 系列方法

View File

@ -37,7 +37,7 @@ public class QueryChain<T> extends QueryWrapperAdapter<QueryChain<T>> {
this.baseMapper = baseMapper; this.baseMapper = baseMapper;
} }
public static <E> QueryChain<E> create(BaseMapper<E> baseMapper) { public static <E> QueryChain<E> of(BaseMapper<E> baseMapper) {
return new QueryChain<>(baseMapper); return new QueryChain<>(baseMapper);
} }