xkbeancomparator 是一个 java bean 对比修改并输出差异的工具。
适用场景:用户编辑提交时,需要记录修改内容,修改前后的值对比,生成操作记录;可以选择记录的字段和字段说明,自定义操作记录。
<dependency> <groupId>com.github.xkzhangsan</groupId> <artifactId>xkbeancomparator</artifactId> <version>0.0.1</version> </dependency>
主要方法为:
public static String compareBean(Object source, Object target) public static CompareResult getCompareResult(Object source, Object target)
(https://github.com/xkzhangsan/xkbeancomparator-samples )
(1)添加pom依赖
(2)增加辅助日志类
UserLog import java.util.HashMap; import java.util.Map; import com.xkzhangsan.xkbeancomparator.BeanComparator; import com.xkzhangsan.xkbeancomparator.CompareResult; public class UserLog{ private static final Map<String, String> propertyTranslationMap = new HashMap<>(); static { propertyTranslationMap.put("name", "用户名"); propertyTranslationMap.put("point", "积分"); } public static CompareResult getCompareResult(Object source, Object target){ return BeanComparator.getCompareResult(source, target, propertyTranslationMap); } }
(3) 使用
@Test public void test1() { User u1 = new User(); u1.setId(1); u1.setName("aa"); u1.setPoint(new BigDecimal("111111111111.12")); User u2 = new User(); u2.setId(1); u2.setName("aa2"); u2.setPoint(new BigDecimal("111111111111.15")); CompareResult compareResult = UserLog.getCompareResult(u1, u2); if (compareResult.isChanged()) { System.out.println(compareResult.getChangeContent()); } }
(4)说明
上面是推荐用法,使用辅助日志类 UserLog 能统一维护一个 java bean 的注释 map 说明,简化调用。 其中日期格式为:”yyyy-MM-dd HH🇲🇲ss”