/**
*
* @param pojo1 原本的实体
* @param pojo2 修改后的实体
* @param <T>
* @return
* @throws Exception
*/
public static <T> Map<String, Map<Object,Object>> compare(T pojo1, T pojo2) throws Exception {
Map<String, Map<Object,Object>> result = new HashMap<String, Map<Object,Object>>();
Field[] fs = pojo1.getClass().getDeclaredFields();//获取所有属性
for (Field f : fs) {
f.setAccessible(true);//设置访问性,反射类的方法,设置为true就可以访问private修饰的东西,否则无法访问
Object v1 = f.get(pojo1);
Object v2 = f.get(pojo2);
Map<Object,Object> m = equalsss(v1, v2);
for(Map.Entry<Object,Object> s : m.entrySet()){
if(s.getValue() == null || s.getValue().equals("")){
continue;
}else {
result.put(f.getName(), equalsss(v1, v2));
}
}
}
return result;
}
public static Map<Object,Object> equalsss(Object obj1, Object obj2) {
Map<Object,Object> map = new LinkedHashMap<>();
if (!(obj1 == obj2) && obj2 != null ) {
map.put(obj1,obj2);
}
return map;
}
对比两个实体中变化的字段
发布于 2019-08-17 633 次阅读
叨叨几句... NOTHING