您的位置:首页 > 其它

map转实体类(前提是实体类里的字段都是string)

2016-03-04 16:19 330 查看
从orcale里查询出来的是个map<String,Object>,为了方便实体类的字段必须是string型(因为如果是数据库里count会返回来一个bigdecimal类型的数据,插入时有可能报类型不匹配,为了方便统一设成string)

/**

* @param map 需转换的map对象
* @param beanName 转后的bean类型(需写包名加类名,否则类找不到),
例:"gov.nbeic.nbzwy.entity.qualityerrorcount.QualityErrorCount"
* @return 
* @throws InstantiationException
* @throws IllegalAccessException
*/
public Object convertMayToBean(Map<String,Object> map,String beanName) throws InstantiationException,
IllegalAccessException{
Class clazz = null;
try {
clazz= Class.forName(beanName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Object object = clazz.newInstance();

//获得对象的所有属性  
Field[] fields=clazz.getDeclaredFields();
for(int i=0;i<fields.length;i++){
String key = fields[i].getName();
if(map.containsKey(key)){
String tempKey = key.substring(0,1).toUpperCase()+key.substring(1,key.length());
try {
Method method = clazz.getMethod("set"+tempKey,new Class[]{fields[i].getType()});
Object args[] = new Object[1];
args[0] = String.valueOf(map.get(key));
method.invoke(object,args);
}catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}

}

return object;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: