package com.zxy.product.human.web.log; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; import com.google.common.collect.Maps; /** * BeanUtil 对象属性比较工具类 * @author zzg * **/ public class BeanUtil { public static void main(String[] args) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { // TODO Auto-generated method stub BeanUtil util = new BeanUtil(); //excel 读取数据 Person excel = util.new Person(); excel.setId("1"); excel.setAge("18"); excel.setName("知学云1"); //database 读取数据 Person database = util.new Person(); database.setId("1"); database.setAge("16"); database.setName("知学云"); Map> map = util.getMap(excel); //遍历map // for (Map.Entry entry : map.entrySet()) { // System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); // } boolean flag = util.getFieldEqual(database, map); System.out.println("属性值是否发生改变:"+ flag); Map> fields = util.getFieldUpdate(database, map); Map c = fields.get(database.getId()); for (Map.Entry entry : c.entrySet()) { System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); } } // 指定Bean对象 关联属性转换为Map public Map> getMap(Person object) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{ Map> obj = new HashMap>(); Map map = Maps.newHashMap(); Class> cls = object.getClass(); Field[] fields = cls.getDeclaredFields(); for(Field field : fields){ Object value = getFieldValue(object, field.getName()); String key = field.getName(); map.put(key, value); } obj.put(object.getId(), map); return obj; } // Bean 关联属性转换为Map public Map getMapProperties(Person object) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{ Map map = Maps.newHashMap(); Class> cls = object.getClass(); Field[] fields = cls.getDeclaredFields(); for(Field field : fields){ Object value = getFieldValue(object, field.getName()); String key = field.getName(); map.put(key, value); } return map; } // 获取指定Field 属性值 public Object getFieldValue(Object obj, String fieldName) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{ Class> cls = obj.getClass(); Object value = null; Field field = cls.getDeclaredField(fieldName);; field.setAccessible(true); value = field.get(obj); return value; } //判断指定对象的属性值是否相等 public boolean getFieldEqual(Person object, Map> map) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{ boolean flag = false; Class> cls = object.getClass(); Field[] fields = cls.getDeclaredFields(); if(map.containsKey(object.getId())){ Map content = map.get(object.getId()); for(Field field : fields){ Object excel = content.get(field.getName()); Object database = getFieldValue(object,field.getName()); if(excel == null && database == null){ flag = false; }else if(excel != null && database == null){ flag = true; break; }else if(excel == null && database != null){ flag = true; break; }else if(excel != null && database != null){ if(excel.equals(database)){ flag = false; }else{ flag = true; break; } } } } return flag; } // 返回匹配对象修改的属性值 public Map> getFieldUpdate(Person object, Map> map) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{ Map> result =new HashMap>(); Class> cls = object.getClass(); Field[] fields = cls.getDeclaredFields(); Map content = map.get(object.getId()); if(map.containsKey(object.getId())){ Map f = new HashMap(); for(Field field : fields){ Object excel = content.get(field.getName()); Object database = getFieldValue(object,field.getName()); //属性值判断:四种情况 if(excel != null && database!= null){ if(!excel.equals(database)){ f.put(field.getName(), excel); } }else if(excel == null && database == null){ }else if(excel != null && database == null){ f.put(field.getName(), excel); }else if(excel == null && database != null){ f.put(field.getName(), null); } } result.put(object.getId(), f); } return result; } public class Person{ private String id; private String name; private String age; private String sex; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } } }
java 打印对象属性 工具类_java 对象属性比较工具类
最新推荐文章于 2024-05-02 10:00:00 发布