/*** 比较两个实体属性值,返回一个map以有差异的属性名为key,value为一个Map分别存oldObject,newObject此属性名的值* @param oldObject 进行属性比较的对象1* @param newObject 进行属性比较的对象2* @return 属性差异比较结果map*/@SuppressWarnings("rawtypes")public static Map<String, Map<String,Object>> compareFields(Object oldObject, Object newObject) {Map<String, Map<String, Object>> map = null;try{   /*** 只有两个对象都是同一类型的才有可比性*/if (oldObject.getClass() == newObject.getClass()) {map = new HashMap<String, Map<String,Object>>();Class clazz = oldObject.getClass();//获取object的所有属性PropertyDescriptor[] pds = Introspector.getBeanInfo(clazz,Object.class).getPropertyDescriptors();for (PropertyDescriptor pd : pds) {//遍历获取属性名String name = pd.getName();//获取属性的get方法Method readMethod = pd.getReadMethod();// 在oldObject上调用get方法等同于获得oldObject的属性值Object oldValue = readMethod.invoke(oldObject);// 在newObject上调用get方法等同于获得newObject的属性值Object newValue = readMethod.invoke(newObject);if(oldValue instanceof List){continue;}if(newValue instanceof List){continue;}if(oldValue instanceof Timestamp){oldValue = new Date(((Timestamp) oldValue).getTime());}if(newValue instanceof Timestamp){newValue = new Date(((Timestamp) newValue).getTime());}if(oldValue == null && newValue == null){continue;}else if(oldValue == null && newValue != null){Map<String,Object> valueMap = new HashMap<String,Object>();valueMap.put("oldValue",oldValue);valueMap.put("newValue",newValue);map.put(name, valueMap);continue;}if (!oldValue.equals(newValue)) {// 比较这两个值是否相等,不等就可以放入map了Map<String,Object> valueMap = new HashMap<String,Object>();valueMap.put("oldValue",oldValue);valueMap.put("newValue",newValue);map.put(name, valueMap);}}}}catch(Exception e){e.printStackTrace();}return map;}

如果只单纯判断两个对象是否相等那么使用equals就行了

Java比较两个实体属性值是否相同,将不同的属性输出相关推荐

  1. js获取属性值,自定义属性,修改移除属性值

    补充:由于不清楚一些属性是内置属性还是自定义属性 所以h5规定 自定义属性使用date-开头作为属性并赋值 案例1: <body><div date-index="1&qu ...

  2. java获取object属性值_java反射获取一个object属性值代码解析

    有些时候你明明知道这个object里面是什么,但是因为种种原因,你不能将它转化成一个对象,只是想单纯地提取出这个object里的一些东西,这个时候就需要用反射了. 假如你这个类是这样的: privat ...

  3. HTML中的form表单的标签、属性、属性值; CSS以及HTML5新增属性、属性值

    form表单HTML5.CSS3标签及属性.属性值 form表单HTML标签.属性.属性值: (单行文本输入框) (密码输入框) (单选框) (多选框) (提交按钮) (重置按钮) 或者按钮(空按钮) ...

  4. html中input中type属性值,HTML的input中type属性的属性值包括哪些

    HTML的input中type属性的属性值包括哪些 (2011-11-25 16:44:40) 标签: 杂谈 1.取消按钮按下时的虚线框,在input里添加属性值 hideFocus 或者 HideF ...

  5. 微信小程序.setData 设置对象属性值,不改变对象整体属性

    .setData 设置对象属性值 步骤一:data初始化数据 userInfo: { nickName:'昵称', avatarUrl:'https://c-ssl.duitang.com/tx.pn ...

  6. jquery给标签添加属性或获取属性值attr方法,移除属性removeAttr方法

    1. attr() 方法设置或返回被选元素的属性值. (1)返回被选元素的属性值: $(selector).attr(attribute) (2)设置被选元素的属性和值 $(selector).att ...

  7. java 拷贝属性值_Java 反射拷贝相同的属性值到指定对象中(两种实现方式)

    范例: public class ReflectUtils { private ReflectUtils() {}; /** * 对象反射赋值 * * @param source 目标对象 * @pa ...

  8. java交换两个变量的值_Java中交换两个整数变量的值

    需求 如下,我们定义了两个整数变量,并且分别进行了赋值,下面,我们需要实现的就是将x的值赋值给y,将y值赋值给x,实现x和y的值交换: int x = 100; int y = 200; 方法一:使用 ...

  9. java 获取两颜色值的中间值

    有时候做项目的时候,需要动态的计算两颜色值之间的中间值,然后做出一定的效果,那么该怎么求呢? 下面说说做法: 简单而言,就是需要对两颜色之间的求和再取平均值,但是直接使用color.parseInt再 ...

最新文章

  1. datagrip mysql乱码_DataGrip 2019.1.2 x64 连接MySQL出错解决
  2. Python实战1- 图片转字符画
  3. 《 双城记 》:无数的平民拥有的只是和她同样的眼睛 ...
  4. 各种网络模拟器的下载链接
  5. nullnullvc中加花
  6. Echarts滚动条
  7. Linux 磁盘无损扩容
  8. 7-3 jmu-python-凯撒密码加密算法 (10分):编写一个凯撒密码加密程序,接收用户输入的文本和密钥k,对明文中的字母a-z和字母A-Z替换为其后第k个字母。
  9. 树莓派自带wifi工作不正常
  10. python md5解密方法与技巧_python ---- 爬取 md5解密结果 的小脚本
  11. python 代码实现反向传播算法
  12. Android自定义View实现相机对焦框
  13. 在Illustrator和手绘文章中创建矢量图形
  14. RGB颜色值与十六进制颜色码对照表
  15. 使用office的邮件合并和文档附件制作带照片的准考证
  16. 网站分析11——成本控制类指标
  17. 闪存芯片NAND FLASH的封装
  18. USB Type-C取电sink芯片 ECP5701
  19. 不知名菜鸟的day10
  20. SQL Server直接执行.sql文件

热门文章

  1. Java并发(三)——线程池
  2. 花书+吴恩达深度学习(五)正则化方法(防止过拟合)
  3. 线性回归-最小二乘python实现
  4. Scrapy分布式原理及Scrapy-Redis源码解析(待完善)
  5. 【PE】手动给PE文件添加一段代码MessageBoxA
  6. html表格支持响应,HTML表格+ JSON响应+选择框
  7. java循环do while_Java中for、while、do while三种循环语句的区别介绍
  8. Windows单机之Weblogic 12c受管服务器配置
  9. Java CXF介绍与实例
  10. [Ext JS 4] 实战之将chart导出为png, jpg 格式的文件