From e9b6f7b2af9481c759cf2b34b2eae68d280cf665 Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 14 Jun 2022 16:43:05 +0800 Subject: [PATCH] add method --- CHANGELOG.md | 1 + .../java/cn/hutool/core/bean/BeanUtil.java | 11 ++++------ .../cn/hutool/core/bean/BeanUtilTest.java | 21 ++++++++----------- 3 files changed, 14 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a9d46793..ebffcd6d2 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ### 🐣新特性 * 【extra 】 Sftp增加构造重载,支持超时(pr#653@Gitee) +* 【core 】 BeanUtil增加isCommonFieldsEqual(pr#653@Gitee) * ### 🐞Bug修复 diff --git a/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java b/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java index ce7b82c9e..f4034c2f1 100755 --- a/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java @@ -968,10 +968,13 @@ public class BeanUtil { /** * 判断source与target的所有公共字段的值是否相同 + * * @param source 待检测对象1 * @param target 待检测对象2 * @param ignoreProperties 不需要检测的字段 * @return 判断结果,如果为true则证明所有字段的值都相同 + * @since 5.8.4 + * @author Takak11 */ public static boolean isCommonFieldsEqual(Object source, Object target, String...ignoreProperties) { @@ -989,13 +992,7 @@ public class BeanUtil { sourceFields.removeAll(Arrays.asList(ignoreProperties)); for (String field : sourceFields) { - Object sourceValue = sourceFieldsMap.get(field); - Object targetValue = targetFieldsMap.get(field); - - if (null == sourceValue && null == targetValue) { - continue; - } - if (!sourceValue.equals(targetValue)) { + if(ObjectUtil.notEqual(sourceFieldsMap.get(field), targetFieldsMap.get(field))){ return false; } } diff --git a/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java index bbad3b823..219780b43 100755 --- a/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java @@ -859,8 +859,8 @@ public class BeanUtilTest { } @Test public void isCommonFieldsEqualTest() { - TestUserEntity userEntity = new TestUserEntity(); - TestUserDTO userDTO = new TestUserDTO(); + final TestUserEntity userEntity = new TestUserEntity(); + final TestUserDTO userDTO = new TestUserDTO(); userDTO.setAge(20); userDTO.setName("takaki"); @@ -869,20 +869,17 @@ public class BeanUtilTest { BeanUtil.copyProperties(userDTO, userEntity); - System.out.println("相同字段值测试" + BeanUtil.isCommonFieldsEqual(userDTO, userEntity)); + Assert.assertTrue(BeanUtil.isCommonFieldsEqual(userDTO, userEntity)); userEntity.setAge(13); - System.out.println("修改age字段值后测试" + BeanUtil.isCommonFieldsEqual(userDTO, userEntity)); - System.out.println("忽略age字段后测试" + BeanUtil.isCommonFieldsEqual(userDTO, userEntity, "age")); + Assert.assertFalse(BeanUtil.isCommonFieldsEqual(userDTO, userEntity)); + Assert.assertTrue(BeanUtil.isCommonFieldsEqual(userDTO, userEntity, "age")); - System.out.println("全null值测试" + BeanUtil.isCommonFieldsEqual(null, null)); - System.out.println("部分null值测试1" + BeanUtil.isCommonFieldsEqual(null, userEntity)); - System.out.println("部分null值测试2" + BeanUtil.isCommonFieldsEqual(userEntity, null)); + Assert.assertTrue(BeanUtil.isCommonFieldsEqual(null, null)); + Assert.assertFalse(BeanUtil.isCommonFieldsEqual(null, userEntity)); + Assert.assertFalse(BeanUtil.isCommonFieldsEqual(userEntity, null)); userEntity.setSex(0); - System.out.println( - "修改age、sex字段修改后并忽略测试" - + BeanUtil.isCommonFieldsEqual(userDTO, userEntity, "age", "sex") - ); + Assert.assertTrue(BeanUtil.isCommonFieldsEqual(userDTO, userEntity, "age", "sex")); } }