# xkbeancomparator **Repository Path**: xkzhangsan/xkbeancomparator ## Basic Information - **Project Name**: xkbeancomparator - **Description**: xkbeancomparator是一个java bean对比修改并输出差异的工具。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2019-10-28 - **Last Updated**: 2022-01-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # xkbeancomparator是一个java bean对比修改并输出差异的工具。 xkbeancomparator is a Java bean contrast modification and outputs the difference. ## 0.依赖 dependency: com.github.xkzhangsan xkbeancomparator 0.0.3 ## 1.常见用处 Common use: (1)对修改过的对象进行对比生成修改日志The modified objects are compared to generate a change log ; (2)对比部分字段修改,根据字段注释输出日志Compare partial field modifications and output the log based on field comments 。 ## 2.主要功能类和用法 Main function classes and usage: 主要类名称 Class:BeanComparator.java 主要方法为 Method : public static String compareBean(Object source, Object target) public static CompareResult getCompareResult(Object source, Object target) ## 3 实例 xkbeancomparator-samples ( https://github.com/xkzhangsan/xkbeancomparator-samples ) (1)添加pom依赖 com.github.xkzhangsan xkbeancomparator 0.0.2 (2)java bean类 User import java.math.BigDecimal; public class User { Integer id; String name; private BigDecimal point; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public BigDecimal getPoint() { return point; } public void setPoint(BigDecimal point) { this.point = point; } } (3)增加辅助日志类 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 propertyTranslationMap = new HashMap<>(); static { propertyTranslationMap.put("name", "用户名"); propertyTranslationMap.put("point", "积分"); } public static CompareResult getCompareResult(Object source, Object target){ return BeanComparator.getCompareResult(source, target, propertyTranslationMap); } } (4) 使用 @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()); } } (5)输出结果 用户名:aa->aa2,积分:111111111111.12->111111111111.15, (6)说明 instructions 上面是推荐用法,使用辅助日志类能统一维护一个java bean的注释map,简化调用。 The recommended usage, above, is to use secondary logging classes to uniformly maintain an annotated map of a Java bean, simplifying invocation. 欢迎提建议 Suggestions are welcome![issue](https://github.com/xkzhangsan/xkbeancomparator)