xkbeancomparatorJava bean 对比修改并输出差异的工具

联合创作 · 2023-09-28 10:52

xkbeancomparator 是一个 java bean 对比修改并输出差异的工具。


适用场景:用户编辑提交时,需要记录修改内容,修改前后的值对比,生成操作记录;可以选择记录的字段和字段说明,自定义操作记录。


0.依赖 dependency:



<dependency>
<groupId>com.github.xkzhangsan</groupId>
<artifactId>xkbeancomparator</artifactId>
<version>0.0.1</version>
</dependency>

1.常见用处:



  • 对修改过的对象进行对比生成修改日志;

  • 对比部分字段修改,根据字段注释输出日志。


2.主要功能类和用法:



  • 主要类名称:BeanComparator.java

  • 主要方法为:



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依赖



<dependency>
<groupId>com.github.xkzhangsan</groupId>
<artifactId>xkbeancomparator</artifactId>
<version>0.0.1</version>
</dependency>

(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"

浏览 17
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报