为什么要bean和map互相转换?
做web开发,从request中获取表单参数,并且赋值给bean,操作起来太麻烦。。。
解决方法
用到apache的commons-beanutils包,由于commons-beanutils包要用到commons-logging,所以要先下载这两个jar包
下载地址:
http://commons.apache.org/proper/commons-beanutils/download_beanutils.cgi
http://commons.apache.org/proper/commons-logging/download_logging.cgi
bean转换map方法
Map map=BeanUtils.describe(object);
map转换bean方法
BeanUtils.populate(object, map);
完整代码
测试用的bean
public class Person {
private String name;
private int age;
private double length;
private Date birthday;
private String nickname;
private String info;
public Person(){
nickname="小名";
info="只是属性";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
private String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
}
转换类
public class Test {
/**
* 需要
* commons-beanutils-1.9.3.jar
* commons-logging-1.2.jar
*/
public static void bean2map(){
// TODO Auto-generated method stub
Person p=new Person();
// p.setName("哈哈");
p.setAge(20);
p.setBirthday(new Date());
p.setLength(1.75);
try {
Map map=BeanUtils.describe(p);
Iterator it=map.entrySet().iterator();
while(it.hasNext()){
Map.Entry en=(Map.Entry)it.next();
System.out.println(en.getKey()+"=="+en.getValue());
}
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 需要
* commons-beanutils-1.9.3.jar
* commons-logging-1.2.jar
* commons-collections-3.2.2.jar
*/
public static void bean2map2(){
// TODO Auto-generated method stub
Person p=new Person();
// p.setName("哈哈");
p.setAge(20);
p.setBirthday(new Date());
p.setLength(1.75);
Map map=new BeanMap(p);
Iterator it=map.entrySet().iterator();
while(it.hasNext()){
Map.Entry en=(Map.Entry)it.next();
System.out.println(en.getKey()+"=="+en.getValue());
}
}
public static void map2bean(){
Map map=new HashMap();
map.put("name", "java");
map.put("age","17");
map.put("length", "身高");
map.put("birthday", new Date());
Person p=new Person();
try {
BeanUtils.populate(p, map);
String s=ReflectionToStringBuilder.toString(p);
System.out.println(s);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
bean2map();
bean2map2();
map2bean();
}
}