BeanUtils类可以帮助我们copy值到类的属性中,也可以copy一个对象到另一个对象。
- UserEO user = new UserEO();
- String key = "userName";
- String value = "张三";
- BeanUtils.copyProperty(user, key, value); //copy属性
- System.out.println(user.getUserName());
- UserEO user1 = new UserEO();
- BeanUtils.copyProperties(user1, user); //copy对象
- System.out.println(user1.getUserName());
在copy值到属性的时候可能会出现类型不能识别的情况,我们需要转换类型:
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import org.apache.commons.beanutils.Converter;
- public class DateConverter implements Converter {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- /**
- * params:第一个参数是要转换的类型,如果要拷贝一个字符串到日期中,此时这个clz就是日期类型
- * 第二个参数是要转换的值
- * return : 转换之后的值
- */
- @SuppressWarnings("unchecked")
- @Override
- public <T> T convert(Class<T> clz, Object value) {
- try {
- if(clz!=Date.class){
- return null;
- }
- if(value instanceof String){
- return (T) sdf.parse((String)value);
- }
- } catch (ParseException e) {
- e.printStackTrace();
- }
- return null;
- }
- }
- /**
- * 创建转换器的步骤:
- * 1、创建一个类,实现Converter接口
- * 2、覆盖这个接口的convert方法,在这个方法中实现转换
- * 3、在拷贝属性之前注册转换器
- */
- ConvertUtils.register(new DateConverter(), java.util.Date.class);
- BeanUtils.copyProperty(user, "createDate", "2014-10-11");
- System.out.println(user.getCreateDate());