复制属性的工具类

本文探讨了在Java开发中,使用ApacheBeanUtilsBean的copyProperties方法进行值对象和实体间的数据复制时遇到的问题,特别是在处理Java.sql.Date和java.util.Date类型数据时的挑战。通过注册转换器并封装copyProperties方法,实现了一种更稳健的数据复制策略,避免了因日期字段为空而引发的异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发中进行遇到值对象和实体间的数据复制.

其中最常用的为Apache BeanUtilsBean的copyProperties.

本次测试发现该工具可兼容大部分数据格式,但在Java.sql.Date和java.util.Date复制时,原数据如为空将发送报错.

通过注册BeanUtilsBean的转换器,简单封装copyProperties方法.

完成效果: 调用封装后的工具类方法复制对象属性时, 遇到Date数据一律给予新对象对应属性赋值为null.

 

最终使用:

        Attach attach = new Attach();
        attach.setCreatePerson("123");
        //attach.setCreateTime(new Date());
        EbankApply ebankApply = new EbankApply();
        EbankApply ebankApply2 = new EbankApply();
        EbankApply ebankApply4 = new EbankApply();
        try {
            org.apache.commons.beanutils.BeanUtils.copyProperties(ebankApply, attach);//Date 数据为空时报错
            org.apache.commons.beanutils.PropertyUtils.copyProperties(ebankApply2, attach);//正常
            org.springframework.beans.BeanUtils.copyProperties(attach, ebankApply4);//注意参数顺序和Apache的相反
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
        System.out.println(attach);
        System.out.println(ebankApply);
        System.out.println(ebankApply2);
        System.out.println(ebankApply4);

所以不使用BeanUtil,使用PropertyUtils

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值