From 68f1a7ef99d5f7eff88277c06051e1f9333881da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=80=E6=BA=90=E6=B5=B7=E5=93=A5?= Date: Tue, 25 Jul 2023 18:19:23 +0800 Subject: [PATCH] docs: update docs --- docs/zh/base/add-delete-update.md | 25 ++++++++++++++ docs/zh/base/chain.md | 33 ++++++++++++++++++- .../com/mybatisflex/test/UpdateChainTest.java | 16 +++++++++ 3 files changed, 73 insertions(+), 1 deletion(-) diff --git a/docs/zh/base/add-delete-update.md b/docs/zh/base/add-delete-update.md index b8bf6332..ada7c459 100644 --- a/docs/zh/base/add-delete-update.md +++ b/docs/zh/base/add-delete-update.md @@ -170,3 +170,28 @@ update tb_account set user_name = "michael", age = (select ... from ... ) where id = 100 ``` + +## UpdateChain + +UpdateChain 是一个对 `UpdateEntity`、`UpdateWrapper` 等进行封装的一个工具类,方便用户用于进行链式操作。 + +假设我们要更新 `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 +``` + +更多关于 **链式操作**,请点击这个 [这里](./chain.html#updatechain-示例)。 diff --git a/docs/zh/base/chain.md b/docs/zh/base/chain.md index 27d6a441..80e4a533 100644 --- a/docs/zh/base/chain.md +++ b/docs/zh/base/chain.md @@ -2,6 +2,9 @@ 在 MyBatis-Flex 中,内置了 `QueryChain.java` 和 `UpdateChain.java` 用于对数据进行链式查询操作和链式数据操作(修改和删除)。 +- **QueryChain**:链式查询 +- **UpdateChain**:链式更新 + ## QueryChain 示例 @@ -39,9 +42,10 @@ List
articles = QueryChain.of(mapper) ## UpdateChain 示例 假设我们要更新 `Account` 的 `userName` 为 "`张三`",更新年龄在之前的基础上加 1,更新代码如下: + ```java @Test -public void testUpdateChain() { +public void testUpdateChain1() { UpdateChain.of(Account.class) .set(Account::getUserName, "张三") .setRaw(Account::getAge, "age + 1") @@ -56,6 +60,33 @@ UPDATE `tb_account` SET `user_name` = '张三' , `age` = age + 1 WHERE `id` = 1 ``` +**另一个示例:** + +```java +@Test +public void testUpdateChain2() { + + //更新数据 + UpdateChain.of(Account.class) + .set(Account::getAge, ACCOUNT.AGE.add(1)) + .where(Account::getId).ge(100) + .and(Account::getAge).eq(18) + .update(); + + //查询所有数据并打印 + QueryChain.of(accountMapper) + .list() + .forEach(System.out::println); +} +``` +通过 `UpdateChain` 进行 `update()`,其执行的 SQL 如下: + +```sql +UPDATE `tb_account` SET `age` = `age` + 1 +WHERE `id` >= 100 AND `age` = 18 +``` + + ## QueryChain 的方法 diff --git a/mybatis-flex-test/mybatis-flex-native-test/src/main/java/com/mybatisflex/test/UpdateChainTest.java b/mybatis-flex-test/mybatis-flex-native-test/src/main/java/com/mybatisflex/test/UpdateChainTest.java index 48502783..50eabe41 100644 --- a/mybatis-flex-test/mybatis-flex-native-test/src/main/java/com/mybatisflex/test/UpdateChainTest.java +++ b/mybatis-flex-test/mybatis-flex-native-test/src/main/java/com/mybatisflex/test/UpdateChainTest.java @@ -4,6 +4,7 @@ import com.mybatisflex.core.MybatisFlexBootstrap; import com.mybatisflex.core.audit.AuditManager; import com.mybatisflex.core.audit.ConsoleMessageCollector; import com.mybatisflex.core.audit.MessageCollector; +import com.mybatisflex.core.query.QueryChain; import com.mybatisflex.core.update.UpdateChain; import org.apache.ibatis.logging.stdout.StdOutImpl; import org.junit.BeforeClass; @@ -13,6 +14,8 @@ import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; import javax.sql.DataSource; +import static com.mybatisflex.test.table.AccountTableDef.ACCOUNT; + public class UpdateChainTest { static AccountMapper accountMapper; @@ -53,4 +56,17 @@ public class UpdateChainTest { Account account = accountMapper.selectOneById(1); System.out.println(account); } + + @Test + public void testUpdateChain1() { + UpdateChain.of(Account.class) + .set(Account::getAge, ACCOUNT.AGE.add(1)) + .where(Account::getId).ge(100) + .and(Account::getAge).eq(18) + .update(); + + QueryChain.of(accountMapper) + .list() + .forEach(System.out::println); + } }