比较修改前后对象:
//返回一个map以不同的属性名为key,value为一个list分别存obj1,obj2此属性名的值 public static Map<String,List<Object>> equals(Object obj1,Object obj2) throws IntrospectionException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{ Map<String,List<Object>> map=new HashMap<String,List<Object>>(); if(obj1.getClass()==obj2.getClass()){//只有两个对象都是同一类型的才有可比性 Class clazz=obj1.getClass(); //获取object的属性描述 PropertyDescriptor[] pds=Introspector.getBeanInfo(clazz,Object.class).getPropertyDescriptors(); for(PropertyDescriptor pd:pds){//这里就是所有的属性了 String name=pd.getName();//属性名 Method readMethod=pd.getReadMethod();//get方法 //在obj1上调用get方法等同于获得obj1的属性值 Object o1=readMethod.invoke(obj1); //在obj2上调用get方法等同于获得obj2的属性值 Object o2=readMethod.invoke(obj2); if(pd.getPropertyType().toString().equals("class java.util.Date")){ o1=(DateUtil.DateToString((Date)o1, "yyyy-MM-dd HH:mm:ss")); o2=(DateUtil.DateToString((Date)o2, "yyyy-MM-dd HH:mm:ss")); } if(o1!=null&&o2!=null&&!o1.equals(o2)){//比较这两个值是否相等,不等就可以放入map了 List<Object> list=new ArrayList<Object>(); list.add(o1); list.add(o2); map.put(name,list); } } } return map; }
将比较结果map保存日志表。
时间: 2024-11-05 19:40:23