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;
}
/**
*
* @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;
}
相关文章推荐
- liunx 安装lnmp 环境配置多站点
- 第24课:Spark Shuffle内幕彻底解密
- 关于TextView的一些个人总结之二
- 2016 使用seajs时如何模块化jquery
- 重定向redirect与跳转forward区别
- 2016.03.04(struts前台取值)
- java调用百度定位api服务获取地理位置示例
- scala类的定义
- onConfigurationChanged,oncreate 等
- 简洁代码之道:用多态替代条件语句及避免全局可变状态
- C语言实现双向非循环链表(带头结点尾结点)的节点插入
- 将100~200之间的不能被3整除的数输出
- IEnumerable,ICollection,IList,List区别
- 学习&使用-libcurl
- 闭包--面试之必问
- HttpClient 发送post和get请求 调用第三方webservice
- Android客户端性能优化(魅族资深工程师毫无保留奉献)
- Android与Java中的ThreadLocal
- 带有异步清0、异步置1的D触发器模块描述及其Testbench测试
- Android开发,卸载应用的时候删除文件或文件夹