java变更历史记录_java Web修改实体类,并记录修改内容。

论坛 期权论坛 脚本     
已经匿名di用户   2022-5-29 19:35   1383   0

比较修改前后对象:

//返回一个map以不同的属性名为key,value为一个list分别存obj1,obj2此属性名的值

public static Map> equals(Object obj1,Object obj2) throws IntrospectionException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{

Map> map=new HashMap>();

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 list=new ArrayList();

list.add(o1);

list.add(o2);

map.put(name,list);

}

}

}

return map;

}

将比较结果map保存日志表。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP