From cbebecda5805db6eff2ce04bb92ebd97324073bf Mon Sep 17 00:00:00 2001 From: VampireAchao Date: Tue, 15 Mar 2022 22:46:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=BC=BAActiveEntity=EF=BC=8C?= =?UTF-8?q?=E4=BD=BF=E5=85=B6=E5=8F=AF=E4=BB=A5=E4=BD=BF=E7=94=A8getter?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E7=9A=84lambda=E5=8F=96=E5=80=BC=E6=88=96?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/hutool/db/LambdaEntity.java | 35 +++++++++++++++++++ .../src/test/java/cn/hutool/db/CRUDTest.java | 8 +++++ 2 files changed, 43 insertions(+) create mode 100644 hutool-db/src/main/java/cn/hutool/db/LambdaEntity.java diff --git a/hutool-db/src/main/java/cn/hutool/db/LambdaEntity.java b/hutool-db/src/main/java/cn/hutool/db/LambdaEntity.java new file mode 100644 index 000000000..2f0622ae6 --- /dev/null +++ b/hutool-db/src/main/java/cn/hutool/db/LambdaEntity.java @@ -0,0 +1,35 @@ +package cn.hutool.db; + +import cn.hutool.core.lang.func.Func1; +import cn.hutool.core.lang.func.LambdaUtil; + +/** + * 支持lambda的Entity + * + * @author VampireAchao + */ +public class LambdaEntity extends ActiveEntity { + + public LambdaEntity(T entity) { + super(parse(entity)); + } + + @SuppressWarnings("unchecked") + public R get(Func1 field) { + return (R) super.get(LambdaUtil.getFieldName(field)); + } + + @SuppressWarnings("unchecked") + public LambdaEntity set(Func1 field, Object value) { + return (LambdaEntity) super.set(LambdaUtil.getFieldName(field), value); + } + + @SuppressWarnings("unchecked") + public LambdaEntity setIgnoreNull(Func1 field, Object value) { + if (null != field && null != value) { + return (LambdaEntity) set(LambdaUtil.getFieldName(field), value); + } + return this; + } + +} diff --git a/hutool-db/src/test/java/cn/hutool/db/CRUDTest.java b/hutool-db/src/test/java/cn/hutool/db/CRUDTest.java index d81502707..c08c2df2d 100644 --- a/hutool-db/src/test/java/cn/hutool/db/CRUDTest.java +++ b/hutool-db/src/test/java/cn/hutool/db/CRUDTest.java @@ -120,6 +120,14 @@ public class CRUDTest { Assert.assertFalse(entity.isEmpty()); } + @Test + public void lambdaSetTest() { + LambdaEntity entity = new LambdaEntity<>(new User()); + entity.set(User::getAge, 66).load(); + Assert.assertEquals(new Integer(66), entity.get(User::getAge)); + Assert.assertFalse(entity.isEmpty()); + } + /** * 对增删改查做单元测试 *