map to pojo(在线等)

psueudc 2007-08-20 10:00:12
如题,将map对象转换成指定pojo对象
在线等
...全文
394 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangzh910 2008-02-24
  • 打赏
  • 举报
回复
最简单的办法是用 BeanUtils.populate(entity, map);它可以将属性直接赋值给pojo
rorey_008 2007-08-20
  • 打赏
  • 举报
回复
就是java的反射
洪泉 2007-08-20
  • 打赏
  • 举报
回复
楼上正解
  • 打赏
  • 举报
回复
package test;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;

public class Test {

  public static void main(String[] args) throws ClassNotFoundException,
      InstantiationException, IllegalAccessException, IllegalArgumentException,
      InvocationTargetException, SecurityException, NoSuchFieldException {

    Map<String, Object> map = new HashMap<String, Object>();
    map.put("name", "abc");
    map.put("age", 20);

    Student stu = new Student();
    
    Class clazz = Class.forName("test.Student");  

    for (Map.Entry<String, Object> entry : map.entrySet()) {
      Field field = clazz.getDeclaredField(entry.getKey());
      field.setAccessible(true);
      field.set(stu, entry.getValue());
    }

    System.out.println(stu.getName());
    System.out.println(stu.getAge());
  }
}

class Student {
  private String name;
  private int age;
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
}
洪泉 2007-08-20
  • 打赏
  • 举报
回复
可以考虑使用java的反射机制
psueudc 2007-08-20
  • 打赏
  • 举报
回复

key是 POJO 的属性,value是 POJO 的属性值
  • 打赏
  • 举报
回复
那你的 Map 里面放了些什么?键是 POJO 的属性,值是 POJO 的属性值?
psueudc 2007-08-20
  • 打赏
  • 举报
回复
谢谢大家帮助,现在已经完成了
psueudc 2007-08-20
  • 打赏
  • 举报
回复
/**
*
* 标题:中石油集团公司生产管理系统
*
* 专业:录井专业
*
* 公司: 荆鹏
*
* 作者:宋腾,2007-8-20
*
* 描述:对该类所实现的功能做大致的描述
*
* 说明: 需要特别注明的信息在此描述
*/
public static Object mapToPojo(Map map, Object pojo) throws Exception {


// 获得对象的类型
Class classType = pojo.getClass();
// 获得对象的所有属性
Field fields[] = classType.getDeclaredFields();
// Field mapFields[] = null;
Iterator keyValuePairs = map.entrySet().iterator();
for (int i = 0; i < map.size(); i++) {
Map.Entry entry = (Map.Entry) keyValuePairs.next();
String key = (String) entry.getKey();
String value = (String) entry.getValue();
String firstKey = key.substring(0, 1).toUpperCase();
// 获得和属性对应的getXXX()方法的名字
String getMethodName = "set" + firstKey + key.substring(1);
// 获得和属性对应的getXXX()方法
Class[] cargs = new Class[1];
String realArgs = value;
Integer in = new Integer(2);
cargs[0] = realArgs.getClass();
Method getMethod = classType.getMethod(getMethodName,
cargs);
// 调用原对象的getXXX()方法
Object test = getMethod.invoke(pojo, value);
System.out.println(test);
}
return pojo;
}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧