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()); + } + /** * 对增删改查做单元测试 *