在java中写接口,很多都是以JSON方式传参, 然后再序列化成各种对象~~~
Map也是其中一种, 但是呢,Map中的参数有可能是很多个对象属性都在里面, 难道我要一个个的去get(“aa”),get(“bb”),get(“cc”).......这样我觉得太low了。。。
然后我就写了一个拷贝的东西, 你只要给我一个Map, 一个对象, 我就把这个Map中的key=对象字段名的值,都拷贝到对象中去, 这样就不用一个个get,然后再去set了。。。
注意哦~~~ Map中的 key 要等于 字段名
代码代码代码代码代码代码代码代码代码代码!!
/**
* 根据Map中的key对应对象的属性来更新对象的值
* <li>
* updateProperties中的key必须跟bean中的字段名保持一致才能更新
* </li>
* @param updateProperties 要更新的字段以及值
* @param bean 要更新的对象
* @author wangyijie
*/
public static <T> void copyPropertiesInclude(Map<String, Object> updateProperties, T bean){
Set<Map.Entry<String, Object>> revisabilityFiledSet = updateProperties.entrySet();
for (Map.Entry<String, Object> entry : revisabilityFiledSet) {
Object value = entry.getValue();
if(value != null){
try {
org.apache.commons.beanutils.BeanUtils.setProperty(bean, entry.getKey(), value);
} catch (Exception e) {
logger.error("从Map{} 复制 到对象 {} 属性{} 错误key{} 异常", updateProperties.getClass(),bean.getClass(), entry.getKey(),e);
}
}
}
}