导入commons-beanutils-1.8.3.jar及commons-logging-1.1.3.jar
使用commons-beanutils-1.8.3.jar包时需要同时使用commons-logging-1.1.3.jar包,因为需要写日志。
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.Assert; 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("name:"+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("age:"+p.getAge()); System.out.println("birthday:"+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("")) { 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("birthday2:"+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()); } }