package com.wzh.test.beanutils; import java.lang.reflect.InvocationTargetException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.ConversionException; import org.apache.commons.beanutils.ConvertUtils; import org.apache.commons.beanutils.Converter; import org.apache.commons.beanutils.locale.converters.DateLocaleConverter; import org.junit.Test; //使用BeanUtils操作Bean属性(第三方) public class Demo1 { @Test public void test1() throws IllegalAccessException, InvocationTargetException { Person p = new Person(); BeanUtils.setProperty(p, "name", "victor"); System.out.println(p.getName()); } @Test public void test2() throws IllegalAccessException, InvocationTargetException { Person p = new Person(); // 自动将String转为int 支持8种基本数据类型 BeanUtils.setProperty(p, "age", "23"); // 默认不支持时间转换 BeanUtils.setProperty(p, "Birthday", "2012-3-1"); System.out.println(p.getAge()); System.out.println(p.getBirthday()); } @Test public void test3() throws IllegalAccessException, InvocationTargetException { // 为了让日期赋到Bean的Birthday属性上,我们给BeanUtils注册一个日期转换器(敲入代码未起作用,需检查) // 方法1. ConvertUtils.register(new Converter() { @Override public Object convert(Class type, Object value) { if (value == null) return null; if (!(value instanceof String)) { System.out.println("不是日期类型"); throw new ConversionException("不是日期类型"); } String str = (String) value; if (str.trim().equals(str)) { return null; } SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); try { return df.parse(str); } catch (ParseException e) { throw new RuntimeException(e);// 异常链不能断 } } }, Date.class); // ConvertUtils.register(new DateLocaleConverter(), Date.class); Person p = new Person(); // 自动将String转为int 支持8种基本数据类型 BeanUtils.setProperty(p, "birthday", "2012-12-12"); System.out.println(p.getBirthday()); } @Test public void test4() throws IllegalAccessException, InvocationTargetException { Map map = new HashMap(); map.put("name", "aa"); map.put("birthday", "2012-1-1"); ConvertUtils.register(new DateLocaleConverter(), Date.class); Person p = new Person(); // 自动将String转为int 支持8种基本数据类型 BeanUtils.populate(p, map);//用Map集合中的值填充到Bean的属性 System.out.println(p.getBirthday()); } }
package com.wzh.test.beanutils; import java.util.Date; public class Person { public Person() { super(); // TODO Auto-generated constructor stub } private String name; private String age; private Date birthday; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }