对比两个实体中变化的字段

发布于 2019-08-17  633 次阅读



	/**
	 *
	 * @param pojo1  原本的实体
	 * @param pojo2  修改后的实体
	 * @param <T>
	 * @return
	 * @throws Exception
	 */
	public static <T> Map<String, Map<Object,Object>> compare(T pojo1, T pojo2) throws Exception {


		Map<String, Map<Object,Object>> result = new HashMap<String, Map<Object,Object>>();

		Field[] fs = pojo1.getClass().getDeclaredFields();//获取所有属性
		for (Field f : fs) {
			f.setAccessible(true);//设置访问性,反射类的方法,设置为true就可以访问private修饰的东西,否则无法访问
			Object v1 = f.get(pojo1);
			Object v2 = f.get(pojo2);
			Map<Object,Object> m = equalsss(v1, v2);
			for(Map.Entry<Object,Object> s : m.entrySet()){
					if(s.getValue() == null  || s.getValue().equals("")){
						continue;
					}else {
						result.put(f.getName(), equalsss(v1, v2));
					}
			}
		}

		return result;
	}


	public static Map<Object,Object> equalsss(Object obj1, Object obj2) {
		Map<Object,Object> map = new LinkedHashMap<>();
		if (!(obj1 == obj2) && obj2 != null ) {
			map.put(obj1,obj2);
		}
		return map;
	}


公交车司机终于在众人的指责中将座位让给了老太太