比较对象属性的变化
2018-11-29 本文已影响0人
风一样的存在
思路:对象转化为map然后比较map之间的键值变化。
import java.util.Map;
import java.util.Objects;
public class CompareUtils {
private static final ObjectMapper mapper = new ObjectMapper();
public static String getModifyContent(Object source, Object target) {
StringBuffer stringBuffer=new StringBuffer();
if (null == source || null == target) {
if (null == source && null == target) return null;
else if (null == target) return null;
else {
return mapper.convertValue(target, new TypeReference<Object>() {
});
}
}
if (!Objects.equals(source.getClass().getName(), target.getClass().getName())) {
throw new ClassCastException("source and target are not same class type");
}
Map<String, Object> sourceMap = mapper.convertValue(source, new TypeReference<Map<String, Object>>() {});
Map<String, Object> targetMap = mapper.convertValue(target, new TypeReference<Map<String, Object>>() {});
sourceMap.forEach((k, v) -> {
Object targetValue = targetMap.get(k);
if (!Objects.equals(v, targetValue)) {
stringBuffer.append(k+"由原来的:"+v+",更新为:"+targetValue+";");
}
});
return stringBuffer.toString();
}
}