| package com.stylefeng.guns.core.util; | 
|   | 
| import java.beans.PropertyDescriptor; | 
| import java.lang.reflect.Field; | 
| import java.lang.reflect.Method; | 
| import java.util.Date; | 
|   | 
| /** | 
|  * 对比两个对象的变化的工具类 | 
|  * | 
|  * @author fengshuonan | 
|  * @Date 2017/3/31 10:36 | 
|  */ | 
| public class SimpleContrast { | 
|   | 
|     //记录每个修改字段的分隔符 | 
|     public static final String separator = ";;;"; | 
|   | 
|     /** | 
|      * 比较两个对象,并返回不一致的信息 | 
|      * | 
|      * @author stylefeng | 
|      * @Date 2017/5/9 19:34 | 
|      */ | 
|     public static String contrastObj(Object pojo1, Object pojo2) { | 
|         String str = ""; | 
|         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 instanceof Date) { | 
|                     o1 = DateUtil.getDay((Date) o1); | 
|                 } | 
|                 if (!o1.toString().equals(o2.toString())) { | 
|                     if (i != 1) { | 
|                         str += separator; | 
|                     } | 
|                     str += "字段名称" + field.getName() + ",旧值:" + o1 + ",新值:" + o2; | 
|                     i++; | 
|                 } | 
|             } | 
|         } catch (Exception e) { | 
|             e.printStackTrace(); | 
|         } | 
|         return str; | 
|     } | 
| } |