首先导入两个jar包:commons-beanutils-1.8.2.jar和commons-logging-1.1.1.jar
package com.hx.shopping.test;
import java.lang.reflect.InvocationTargetException;/*
* 注:必须为util下的Date包
*/
import java.util.Date;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import com.hx.shopping.entity.User;
import com.hx.shopping.util.DateConverter;
public class BeanUtilsTest {
public static void main(String[] args) {
User user = new User();
String key = "username";//类中必须有对应的属性名
String value = "张三";
try {
BeanUtils.copyProperty(user, key,value);
//默认的DateConverter不支持String转换成Date类型
//DateConverter does not support default String to 'Date' conversion.
/*
* 日期的类型是未知的格式1994/9/20
* 自己写一个日期转换器:
* 1.创建一个类去实现Converter接口
* 2.再复写接口的convert函数进行转换
* 3.在进行日期复制之前需要注册转换器
*/
BeanUtils.copyProperty(user, "born", "1994/9/20");
BeanUtils.copyProperty(user, "age",78);
System.out.println(user);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
打印结果:User [id=0, username=张三, password=null, nickname=null, age=78, born=Tue Sep 20 00:00:00 CST 1994]
package com.hx.shopping.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.beanutils.Converter;
/**
* 日期格式转换器
* @author Administrator
*
*/
public class DateConverter implements Converter {
/*
* 第一个参数是需要转换的类类型,日期类
* 第二个参数是需要转换的字符串值
*/
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
@Override
public Object convert(Class cl, Object value) {
//注:此处的Date导包为java.util.Date;
if(cl != Date.class){
return null;
}
if(value instanceof String){
try {
return sdf.parse((String) value);
} catch (ParseException e) {
e.printStackTrace();
}
}
return null;
}
}