From 4a383a9dc1393098133f8a355f0c2999ed8b7d14 Mon Sep 17 00:00:00 2001 From: redkale Date: Sat, 30 Dec 2023 10:48:09 +0800 Subject: [PATCH] doc --- docs/datasource.md | 42 +++++++++++++++---- .../redkale/source/AbstractDataSource.java | 17 ++++---- .../java/org/redkale/source/DataBatch.java | 31 +++++++++++--- 3 files changed, 67 insertions(+), 23 deletions(-) diff --git a/docs/datasource.md b/docs/datasource.md index 69398c1a0..6cd68b23d 100644 --- a/docs/datasource.md +++ b/docs/datasource.md @@ -61,9 +61,10 @@ redkale.datasource.platf.password = pwd123 ``` -## 增删改 +## 增删改查 ```java @Data +@Table(name = "t_account") public class Account { //男 public static final short GENDER_MALE = 1; @@ -115,12 +116,25 @@ public class Account { } ``` +  删除实体: +```java + //根据主键值删除 + Account account = new Account(); + account.setAccountid("account1"); + source.delete(account); + + //过滤删除, 删除16以下男生 + //等价sql: DELETE FROM t_account WHERE age < 16 AND gender = 1; + source.delete(Account.class, FilterNodes.lt(Account::getAge, 16).and("gender", GENDER_MALE)); +``` +   修改实体对象: ```java //更新单个字段 source.updateColumn(Account.class, "account1", Account::getRemark, "新备注"); //更新多个字段 + //等价sql: UPDATE t_account SET account_name='新名称', remark='新备注', age=age+2 WHERE account_id='account1'; source.updateColumn(Account.class, "account1", ColumnValue.set(Account::getAccountName, "新名称"), ColumnValue.set(Account::getRemark, "新备注"), @@ -133,6 +147,7 @@ public class Account { account.setRemark("新备注"); source.updateColumn(account, "accountName", "remark"); //或者 + //等价sql: UPDATE t_account SET account_name='新名称', remark='新备注' WHERE account_id='account1'; source.updateColumn(account, Account::getAccountName, Account::getRemark); //更新整个对象 @@ -143,17 +158,28 @@ public class Account { source.update(one); //createTime不会被更新,因字段设置了@Column(updatable=false) //过滤更新 + //等价sql: UPDATE t_account SET remark = '不满16岁是青少年' WHERE age < 16; source.updateColumn(Account.class, FilterNodes.lt(Account::getAge, 16), ColumnValue.set(Account::getRemark, "不满16岁是青少年")); ``` -  删除实体: +  批量操作: +```java + Account a1 = new Account(); + a1.setAccountid("account1"); + a1.setAccountName("Hello1"); + a1.setCreateTime(System.currentTimeMillis()); + + //事务性批量操作 + DataBatch batch = DataBatch.create() + .insert(a1) + .updateColumn(Account.class, FilterNodes.lt(Account::getAge, 16), + ColumnValue.set(Account::getRemark, "不满16岁是青少年")) + .delete(Account.class, FilterNodes.lt(Account::getAge, 16).and("gender", GENDER_MALE)); + source.batch(batch); +``` + +  查询实体对象: ```java - //根据主键值删除 - Account account = new Account(); - account.setAccountid("account1"); - source.delete(account); - //过滤删除, 删除16以下男生 - source.delete(Account.class, FilterNodes.lt(Account::getAge, 16).and("gender", GENDER_MALE)); ``` \ No newline at end of file diff --git a/src/main/java/org/redkale/source/AbstractDataSource.java b/src/main/java/org/redkale/source/AbstractDataSource.java index 6559808f2..35b065ddb 100644 --- a/src/main/java/org/redkale/source/AbstractDataSource.java +++ b/src/main/java/org/redkale/source/AbstractDataSource.java @@ -25,7 +25,6 @@ import org.redkale.persistence.Entity; import org.redkale.service.*; import static org.redkale.source.DataSources.*; import org.redkale.util.*; -import org.redkale.annotation.ResourceChanged; /** * DataSource的S抽象实现类
@@ -1244,12 +1243,12 @@ public abstract class AbstractDataSource extends AbstractService implements Data } @Override - public DataBatch update(Class clazz, Serializable pk, String column, Serializable value) { - return update(clazz, pk, ColumnValue.set(column, value)); + public DataBatch updateColumn(Class clazz, Serializable pk, String column, Serializable value) { + return updateColumn(clazz, pk, ColumnValue.set(column, value)); } @Override - public DataBatch update(Class clazz, Serializable pk, ColumnValue... values) { + public DataBatch updateColumn(Class clazz, Serializable pk, ColumnValue... values) { Objects.requireNonNull(clazz); if (clazz.getAnnotation(Entity.class) == null) { throw new SourceException("Entity Class " + clazz + " must be on Annotation @Entity"); @@ -1266,17 +1265,17 @@ public abstract class AbstractDataSource extends AbstractService implements Data } @Override - public DataBatch update(Class clazz, FilterNode node, String column, Serializable value) { - return update(clazz, node, (Flipper) null, ColumnValue.set(column, value)); + public DataBatch updateColumn(Class clazz, FilterNode node, String column, Serializable value) { + return updateColumn(clazz, node, (Flipper) null, ColumnValue.set(column, value)); } @Override - public DataBatch update(Class clazz, FilterNode node, ColumnValue... values) { - return update(clazz, node, (Flipper) null, values); + public DataBatch updateColumn(Class clazz, FilterNode node, ColumnValue... values) { + return updateColumn(clazz, node, (Flipper) null, values); } @Override - public DataBatch update(Class clazz, FilterNode node, Flipper flipper, ColumnValue... values) { + public DataBatch updateColumn(Class clazz, FilterNode node, Flipper flipper, ColumnValue... values) { Objects.requireNonNull(clazz); if (clazz.getAnnotation(Entity.class) == null) { throw new SourceException("Entity Class " + clazz + " must be on Annotation @Entity"); diff --git a/src/main/java/org/redkale/source/DataBatch.java b/src/main/java/org/redkale/source/DataBatch.java index ee7d098a1..4d54672e2 100644 --- a/src/main/java/org/redkale/source/DataBatch.java +++ b/src/main/java/org/redkale/source/DataBatch.java @@ -5,6 +5,8 @@ package org.redkale.source; import java.io.Serializable; import java.util.Collection; +import org.redkale.util.LambdaFunction; +import org.redkale.util.LambdaSupplier; import org.redkale.util.SelectColumn; /** @@ -43,15 +45,13 @@ public interface DataBatch { public DataBatch update(Collection entitys); - public DataBatch update(Class clazz, Serializable pk, String column, Serializable value); + public DataBatch updateColumn(Class clazz, Serializable pk, String column, Serializable value); - public DataBatch update(Class clazz, Serializable pk, ColumnValue... values); + public DataBatch updateColumn(Class clazz, Serializable pk, ColumnValue... values); - public DataBatch update(Class clazz, FilterNode node, String column, Serializable value); + public DataBatch updateColumn(Class clazz, FilterNode node, String column, Serializable value); - public DataBatch update(Class clazz, FilterNode node, ColumnValue... values); - - public DataBatch update(Class clazz, FilterNode node, Flipper flipper, ColumnValue... values); + public DataBatch updateColumn(Class clazz, FilterNode node, Flipper flipper, ColumnValue... values); public DataBatch updateColumn(T entity, final String... columns); @@ -61,4 +61,23 @@ public interface DataBatch { public DataBatch updateColumn(T entity, final FilterNode node, SelectColumn selects); + default DataBatch updateColumn(final Class clazz, final Serializable pk, final LambdaSupplier func) { + return updateColumn(clazz, pk, LambdaSupplier.readColumn(func), func.get()); + } + + default DataBatch updateColumn(final Class clazz, final Serializable pk, LambdaFunction func, Serializable value) { + return updateColumn(clazz, pk, ColumnValue.set(func, value)); + } + + default DataBatch updateColumn(final Class clazz, final FilterNode node, final ColumnValue... values) { + return updateColumn(clazz, node, (Flipper) null, values); + } + + default DataBatch updateColumn(final T entity, final LambdaFunction... funcs) { + return updateColumn(entity, (FilterNode) null, LambdaFunction.readColumns(funcs)); + } + + default DataBatch updateColumn(final T entity, final FilterNode node, final LambdaFunction... funcs) { + return updateColumn(entity, node, LambdaFunction.readColumns(funcs)); + } }