比较两个bean的内容
/**
* 比较两个Bean的内容
*
* @param
* @author zhw
*/
public class ContrastObjUtils {
public String contrastObj(Object oldBean, Object newBean) {
String str = "";
T pojo1 = (T) oldBean;
T pojo2 = (T) newBean;
try {
Class clazz = pojo1.getClass();
Field[] fields = pojo1.getClass().getDeclaredFields();
int i = 1;
for (Field field : fields) {
if ("serialVersionUID".equals(field.getName())) {
continue;
}
PropertyDescriptor pd = new PropertyDescriptor(field.getName(), clazz);
Method getMethod = pd.getReadMethod();
Object o1 = getMethod.invoke(pojo1);
Object o2 = getMethod.invoke(pojo2);
if (o1 == null || o2 == null) {
continue;
}
if (!o1.toString().equals(o2.toString())) {
if (i != 1) {
str += "; ";
}
boolean hasAnnotation = field.isAnnotationPresent((Class extends Annotation>) CustomFieldName.class);
String customFieldValue = "";
if (hasAnnotation) {
CustomFieldName customFieldName = field.getAnnotation(CustomFieldName.class);
customFieldValue = customFieldName.value();
}
// 要显示的字段名
String fieldName = "";
if (customFieldValue != "") {
fieldName = customFieldValue;
} else {
fieldName = field.getName();
}
str += i + "、" + fieldName + ",旧值:" + o1 + ",新值:" + o2;
i++;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return str;
}