BeanUtil使用

@Test
    public void test01() {
        try {
            User u=new User();
            String value="张三";
            String key="username";
            //BeanUtils.copyProperty(u, key, value);//测试属性复制
            //System.out.println(u);
            BeanUtils.copyProperty(u, "ddd",value);//测试空属性
            BeanUtils.copyProperty(u,"age", 1);        //测试类型自转换
            //System.out.println(u);
            
            /*BeanUtils无法转换日期,因为日期格式太多了,需自定义转换方式*/
            /*
             * 自定义转换器:1.创建一个类,实现Converter接口
             * 2.覆盖接口中的Convert(),Convert()实现类型转换
             * 3.拷贝属性前注册转换器
             * 参考itat.zttc.beanutil07.model.DateConverter
             * */
            ConvertUtils.register(new DateConverter(), Date.class);
            BeanUtils.copyProperty(u,"born", "1997-12-22");
            System.out.println(u);
            ConvertUtils.register(new PointConverter(), Point.class);
            BeanUtils.copyProperty(u, "point","23,45");
            System.out.println(u.getPoint());
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
    }
    
    public class DateConverter implements Converter {

    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    /*
     * 该方法中有两个参数,第一个参数表上要转换的类型:
     * 如果要将一个字符串拷贝到一个Date类型中,此时这个Date就是要转换的类型,即参数
     * 第二个参数表示要转换的值,即字符串
     * 该方法的返回值就是转换后的值
     * */
    @Override
    public <T> T convert(Class<T> clz, Object value) {
        //1.判断要转换的类型是否符合要求
        System.out.println(clz);
        if(clz!=Date.class){
            System.out.println("clz!=Date.class");
            return null;
        }
        try {
            if(value instanceof String)
                System.out.println((T) sdf.parse((String) value));
            return (T) sdf.parse((String) value);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

}


你可能感兴趣的:(BeanUtil使用)