把map对象转为bean对象
需求
需要把一个map转换为一个bean对象,这样方便操作一些,更加直观
源码
包和类
org.springframework.cglib.beans
包中的 BeanMap
类
create方法
用于创建一个BeanMap对象,bean这个对象是通过 beanClass.newInstance()
创建的
public static BeanMap create(Object bean) {
BeanMap.Generator gen = new BeanMap.Generator();
gen.setBean(bean);
return gen.create();
}
putAll方法
此方法是把map中的k和v,根据k,set到对象中去
public void putAll(Map t) {
Iterator it = t.keySet().iterator();
while(it.hasNext()) {
Object key = it.next();
this.put(key, t.get(key));
}
}
最终实现
/**
*
* @param map k是属性名,v是属性值
* @param beanClass 此类型的属性必须与map一一对应,必须有get和set方法
* @return
* @throws Exception
*/
public static Object mapToBean(Map<String, String> map, Class<?> beanClass) throws Exception {
Object object = beanClass.newInstance();
BeanMap beanMap = BeanMap.create(object);
beanMap.putAll(map);
return object;
}
调用此方法,得到Object对象后,强转这个对象就可以了
tips:
Class<?> beanClass
这个类一定要有 @Data
注解,或者自动生成getter和setter方法才行!