码迷,mamicode.com
首页 > 编程语言 > 详细

java Web修改实体类,并记录修改内容。

时间:2015-12-09 18:52:33      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

比较修改前后对象:

//返回一个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保存日志表。

 

java Web修改实体类,并记录修改内容。

标签:

原文地址:http://www.cnblogs.com/szhaos/p/5033340.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!