在开发过程中遇到需求,比较数据库中的原数据与新修改要写入库中的数据。这个实体类是比较复杂的。例如有基本类型,BigDecimal类型,自定义类型,Date类型,List集合,Set集合,Map集合等。在比较复杂的类的情况下,使用Objects的equals是不适用的。所以为了解决这个问题,可以使用Javers库中的compare方法来解决该问题`
POM.XML引用
<dependency>
<groupId>org.javers</groupId>
<artifactId>javers-core</artifactId>
<version>6.6.2</version>
</dependency>
实现
Javers javers = JaversBuilder.javers().build();
Diff diff = javers.compare(oldObject,newObject)
boolean flag = diff.hasChange();
示例
peson p1=new peson();
p1.id=1;
p1.Names="张三";
p1.age=89;
peson p2=new peson();
p2.id=1;
p2.Names="李四";
p2.age=35;
Javers javers = JaversBuilder.javers().build();
Diff diff = javers.compare(p1,p2);
boolean flag = diff.hasChanges();
System.out.print(diff.toString());
System.out.println(flag);
控制台输出
Diff:
* changes on com.gdky.apidoc.utility.peson/ :
- 'Names' changed: '张三' -> '李四'
- 'age' changed: '89' -> '35'
true