zoukankan      html  css  js  c++  java
  • 我爱java系列---【java对象比较器,用于记录修改操作时修改的具体详情】

    对象比较器

    public class LogUtils<T> {
    
       /**
        * 对象比较器
        * 比较结果eg:1、字段名称loginName,旧值:liu,新值:gu;2、字段名称address,旧值:hunan,新值:neimenggu
        * @param oldBean
        * @param newBean
        * @return
        */
       public String compareObject(Object oldBean, Object newBean) {
          String str = "";
    
          //if (oldBean instanceof SysConfServer && newBean instanceof SysConfServer) {
          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 += ";";
                   }
                   str += i + "、字段名称" + field.getName() + ",旧值:" + o1 + ",新值:" + o2;
                   i++;
                }
             }
          } catch (Exception e) {
             e.printStackTrace();
          }
          // }
          return str;
       }
    
    }
    愿你走出半生,归来仍是少年!
  • 相关阅读:
    1 Groovy
    HDU
    伸展树整理
    HYSBZ
    markdown语法整理
    HDU
    【JZOJ3085】图的计数【数论】
    【JZOJ3085】图的计数【数论】
    【JZOJ3084】超级变变变【模拟】【规律】
    【JZOJ3084】超级变变变【模拟】【规律】
  • 原文地址:https://www.cnblogs.com/hujunwei/p/12692213.html
Copyright © 2011-2022 走看看