利用反射找到对应类的get方法,并且记录两个实体类的差异

public class DriverAmendUtil {
    
    public static String findDifferent(String str,DataEntity oldClass,DataEntity newClass){
        Map<String, String> valuesMap = updateValue();
        Map<String, String> valueList = valueMap();
        try {
               Method[] omethods = oldClass.getClass().getDeclaredMethods();//获得类的方法集合       
               Method[] nmethods = newClass.getClass().getDeclaredMethods();//获得类的方法集合   
               //遍历方法集合
               for(int i =0 ;i<omethods.length;i++){
                  //获取所有getXX()的返回值
                  //methods[i].getName()方法返回方法名
                  if(omethods[i].getName().startsWith("get")){
                      Object oldObject = omethods[i].invoke(oldClass, null);
                      Object newObject = nmethods[i].invoke(newClass, null);
                      if(oldObject == null||oldObject.toString().equals("")) oldObject = "无";
                      if(newObject == null||newObject.toString().equals("")) newObject = "无";        
                      if(!(oldObject.toString().equals(newObject.toString()))){
                             for (Entry<String, String> entry : valuesMap.entrySet()) {
                              if(nmethods[i].getName().equals(entry.getKey())){
                                  if (valueList.containsKey(entry.getValue())) {
                                      if (oldObject.toString().contains(",")) {
                                          String[] commStr = oldObject.toString().split(",");
                                          String strRe = "";
                                          for (String strC : commStr) {
                                              strRe = strRe.concat(DictUtils.getDictLabel(strC, valueList.get(entry.getValue()), "")).concat(",");
                                          }
                                          oldObject = strRe.substring(0, strRe.length() - 1);
                                      } else {
                                          oldObject = DictUtils.getDictLabel(oldObject.toString(), valueList.get(entry.getValue()), "");
                                      }
                                      if (newObject.toString().contains(",")) {
                                          String[] commStr = newObject.toString().split(",");
                                          String strRe = "";
                                          for (String strC : commStr) {
                                              strRe = strRe.concat(DictUtils.getDictLabel(strC, valueList.get(entry.getValue()), "")).concat(",");
                                          }
                                          newObject = strRe.substring(0, strRe.length() - 1);
                                      } else {
                                          newObject = DictUtils.getDictLabel(newObject.toString(), valueList.get(entry.getValue()), "");
                                      }
                                  }
                                  if(oldObject instanceof Date && newObject instanceof Date){
                                      oldObject =DateUtils.formatDate((Date)oldObject, "yyyy-MM-dd");
                                      newObject =DateUtils.formatDate((Date)newObject, "yyyy-MM-dd");
                                  }
                                  if ("getsArea".equals(entry.getKey())){
                                      if (oldObject.toString().contains(",")) {
                                          String[] commStr = oldObject.toString().split(",");
                                          oldObject = commStr[1];
                                      }
                                      if (newObject.toString().contains(",")){
                                          String[] commStr = newObject.toString().split(",");
                                          newObject = commStr[1];
                                      }
                                  }
                                  str = str + entry.getValue()+"由" + oldObject.toString() + "更改至" + newObject.toString()+ ",";
                              }
                          }
                      }
                  }
               }
               
           } catch (Exception e) {
               e.printStackTrace();
           }
        return str;
    }
    
    private static Map<String, String> valueMap() {
        Map<String, String> valueMap = new HashMap<String, String>();
        valueMap.put("性别", "sk_sex_Flag");
        valueMap.put("身份证明名称", "sk_identity_certify");
        valueMap.put("准驾机型", "sk_driving_mark");
        return valueMap;
    }
    
    private static Map<String, String> updateValue() {
        Map<String,String> KV = new HashMap<String, String>();
        // 驾驶员初次申请表
        KV.put("getsRecordCode","档案编号");
        KV.put("getsArea","所属地区");
        KV.put("getDCheckDate","办理日期");
        KV.put("getsPhotoName","照片名称");
        KV.put("getsPhotoPath","照片路径");
        KV.put("getsDriveno","准驾机型");

// 人员参数基础表
        KV.put("getSName", "姓名");
        KV.put("getSTel", "联系电话");
        KV.put("getSAddress", "住所地址");
        KV.put("getIZipcode", "住所邮政编码");
        KV.put("getCIdentnameCode", "身份证明名称");
        KV.put("getSDocumentsNo", "证件号码");
        KV.put("getSResidProveName", "居住/暂住证明名称");
        KV.put("getSResidProveNo", "居住/暂住证号码");
        KV.put("getsNationality", "国籍");
        KV.put("getCSexFlag", "性别");
        KV.put("getDBirth", "出生日期");

// 驾驶证数据业务表
        KV.put("getDCheckDate","数据办理日期");
        KV.put("getSStartDate", "有效开始日期");
        KV.put("getSEndDate", "有效截止日期");
        KV.put("getSValidPeriod", "有效期限");
        return KV;
    }
}

时间: 2024-10-08 07:23:19

利用反射找到对应类的get方法,并且记录两个实体类的差异的相关文章

比较两个实体类是否一致utils

比较两个实体类是否一致utils: import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.sql.Timestamp; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; public c

对比两个实体类属性值的差异

/// <summary> /// 对比两个实体类属性值的差异 /// </summary> /// <typeparam name="T">实体类</typeparam> /// <param name="oldMod">原实体类</param> /// <param name="newMod">新实体类</param> /// <return

利用反射动态创建实例并调用方法

在.Net 中,程序集(Assembly)中保存了元数据(MetaData)信息,因此就可以通过分析元数据来获取程序集中的内容,比如类,方法,属性等,这大大方便了在运行时去动态创建实例. 主要用途: 动态加载DLL,实现插件机制. 实例化DLL中的类型. 执行后期绑定,访问在运行时创建的类型的方法. 首先,新建一个空白解决方案:DllSolution 向解决方案中添加一个类库:RefDll,这将是需要被动态创建的程序集 重命名默认新建的Class1类:Student,这个类将是需要动态创建的类.

两个实体类 复制 copy 工具类

1 import java.lang.reflect.Field; 2 import java.lang.reflect.Method; 3 import java.util.Date; 4 5 public class CopyBean{ 6 7 /** 8 * 复制sour里属性不为空的值到obje为空的属性 9 * 10 * @param obje 11 * 目标实体类 12 * @param sour 13 * 源实体类 14 * @param isCover 15 * 是否保留obje

两个实体类比较,记录前后的数据变化,精确到每列的值

不是通用的方法,只是提供一个思路. 实体类: /// <summary> /// 体例数据实体类 /// </summary> public class RulesLayout { /// <summary> /// 体例元数据行业代码 /// </summary> public string hydm { get; set; } /// <summary> /// 体例元数据行业名称 /// </summary> public st

hibernate的反转引擎生成两个实体类的问题

在使用myeclipse中自带的hibernate 进行jsp开发时候遇到了这个问题.使用hibernate的反转引擎从数据库生成生成实体类,一个表生成了两个类,xx.java和xxId.java .显示的问题如下 其问题的根本在于没有设置对应表的主键.

hibernate映射实体类查询时数据库空字段赋值给实体类报错的问题

因为一直报实体类空异常,去网上查了资料只查到了并没有查到数据库空值时不给实体类赋值的属性,只有这两个属性 这两个属性时设置 实体类有空字段插入或更新 数据库时空属性为默认值 异常 org.hibernate.InvalidMappingException: Could not parse mapping document from resource cn/pojo/EmpDao.xml at org.hibernate.cfg.Configuration.addResource(Configur

Python类三种方法,函数传参,类与实例变量(一)

1 Python的函数传递: 首先所有的变量都可以理解为内存中一个对象的'引用' a = 1 def func(a): a = 2 func(a) print(a) # 1 a = 1 def fun(a): print("函数里",id(a)) # 函数里 41322472 a = 2 print("赋值后",id(a), id(2)) # 赋值后 41322448 41322448 print("函数外",id(a), id(1)) # 函数

编写Java应用程序。首先,定义描述学生的类——Student,包括学号(int)、 姓名(String)、年龄(int)等属性;二个方法:Student(int stuNo,String name,int age) 用于对对象的初始化,outPut()用于输出学生信息。其次,再定义一个主类—— TestClass,在主类的main方法中创建多个Student类的对象,使用这些对象来测 试Stud

package com.homework.zw; //student类部分 public class Student { int stuNo; String name; int age; void output() { System.out.println("学号:"+stuNo); System.out.println("姓名:"+name); System.out.println("年龄:"+age); } } package com.hom