java一个实体类里有函数和属性_对比两个相同实体类中属性的值的差异(优化)...

Java对比两个实体类字段的值差异

记录这个方法的原因:

需求要求记录一条数据的变更日志,但是由于数据的字段过多,而且我也只想到了通过实体类的对比来判断,所以我在网上查了一下类的比较的方法

网上找到的方法

/**

* 比较两个实体属性值,返回一个map以有差异的属性名为key,value为一个Map分别存oldObject,newObject此属性名的值

*

* @param obj1 进行属性比较的对象1

* @param obj2 进行属性比较的对象2

* @param ignoreList 需要忽略的字段

* @return 属性差异比较结果map

*/

@SuppressWarnings("rawtypes")

public static Map> compareFields(Object obj1, Object obj2, List ignoreList) {

try {

Map> map = new HashMap>();

// 只有两个对象都是同一类型的才有可比性

if (obj1.getClass() == obj2.getClass()) {

Class claz = obj1.getClass();

// 获取object的属性描述

PropertyDescriptor[] pds = Introspector.getBeanInfo(claz,

Object.class).getPropertyDescriptors();

// 这里就是所有的属性了

for (PropertyDescriptor pd : pds) {

// 属性名

String name = pd.getName();

// 如果当前属性选择忽略比较,跳到下一次循环

if (ignoreList != null && ignoreList.contains(name)) {

continue;

}

// get方法

Method readMethod = pd.getReadMethod();

// 在obj1上调用get方法等同于获得obj1的属性值

Object o1 = read

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值