BeanUtils注册数据类型转换器

 1 .  Apache  BeanUtils只支持8种基本数据类型,对于其它类型则要注册转换器,以下以Data为实例
        第一种,直接使用Apache 公司实现好了Converer的实现类的转换器,其它实现可以参阅API文档,
        ConvertUtils.register(new  DateLocaleConverter() , Date.class);//但此转换器,有个BUG,不能传空 “”
        当类型转换时,首先应查BeanUtils    API中是否有提供相应转换器,若没有则进行下面的自己编写转换器。

    第二种,用户定义转换器 ConvertUtils.register(converter,clazz);将 register --->指定类型
public static void copyBean(Object src,Object dest){
     //以下注册 日期 转换器,不能直接用SimpleDateFormat,因为 SimpleDateFormat不检测空的情况

                ConvertUtils.register(new Converter(){    //注意转换器并同时实现接口方法
public  <T> T convert(Class <T> type, Object value) { //泛型定义有待学习    //传递的是对象,为什么呢,不是类
        if(value==null){         //对数据进行null,"",string的检验
        return null;
    }
        if( !(value instanceof String)){     // ConvertUtils.register 只支持 S tring类型到Date类型转换
        throw new ConversionException("只支持String类型转换!");
    }
        String str=(String) value;
        if(str.trim().equals("")){
        return null;
    }
        SimpleDateFormat df=new  SimpleDateFormat("yyyy-MM-dd");
        try{
        return   (T)  df.parse(str);
        }catch(Exception e){
        throw new RuntimeException( e);     //异常键不能断,运行时异常
        }
    }
},  Date.class );  //Converter是接口,内部实现
//至此是注册日期类型转换器的过程

try {
BeanUtils.copyProperties(dest, src);
} catch (Exception e) {
throw new RuntimeException(e);
}
}


BeanUtils.populate(bean,map)

猜你喜欢

转载自blog.csdn.net/dhzbkj/article/details/80551385