美文网首页
BeanUtils.copyProperties

BeanUtils.copyProperties

作者: 晚歌歌 | 来源:发表于2019-03-08 10:17 被阅读0次

开发中经常有一些DO转VO,VO转DO,DTO转DO等等的需求,一般情况下我们会一个一个字段的set,如下:

public static GuideCardInfo buildEntity(GuideCardInfoVO guideCardInfoVO) {
        GuideCardInfo guideCardInfo = new GuideCardInfo();
        if (!ObjectUtils.isEmpty(guideCardInfoVO.getId())) {
            guideCardInfo.setId(Integer.parseInt(guideCardInfoVO.getId()));
        }
        guideCardInfo.setCardId(UUID.randomUUID().toString());
        guideCardInfo.setBankName(guideCardInfoVO.getBankName());
        guideCardInfo.setCardLevel(guideCardInfoVO.getCardLevel());
        guideCardInfo.setCurrency(guideCardInfoVO.getCurrency());
        guideCardInfo.setCity(guideCardInfoVO.getCity());
        guideCardInfo.setCardOrg(guideCardInfoVO.getCardOrg());
        guideCardInfo.setAnnualFee(CurrencyUtil.yuan2centLong(guideCardInfoVO.getAnnualFee()));
        guideCardInfo.setAnnualFeeType(guideCardInfoVO.getAnnualFeeType());
        guideCardInfo.setColor(guideCardInfoVO.getColor());
        guideCardInfo.setCardType(guideCardInfoVO.getCardType());
        guideCardInfo.setCashRate(guideCardInfoVO.getCashRate());
        guideCardInfo.setCashFee(CurrencyUtil.yuan2centLong(guideCardInfoVO.getCashFee()));
        guideCardInfo.setViolateFee(CurrencyUtil.yuan2centLong(guideCardInfoVO.getViolateFee()));
        guideCardInfo.setOverFee(CurrencyUtil.yuan2centLong(guideCardInfoVO.getOverFee()));
        guideCardInfo.setOverflowFee(CurrencyUtil.yuan2centLong(guideCardInfoVO.getOverflowFee()));
        guideCardInfo.setLoanUse(guideCardInfoVO.getLoanUse());
        guideCardInfo.setSplitFee(CurrencyUtil.yuan2centLong(guideCardInfoVO.getSplitFee()));
        guideCardInfo.setPrivilegeInfo(guideCardInfoVO.getPrivilegeInfo());
        guideCardInfo.setWeight(Integer.parseInt(guideCardInfoVO.getWeight() == "" ? "0" : guideCardInfoVO.getWeight()));
        guideCardInfo.setPictureLink(guideCardInfoVO.getPictureLink());
        guideCardInfo.setCardName(guideCardInfoVO.getCardName());
        guideCardInfo.setTags(guideCardInfoVO.getTags());
        guideCardInfo.setRightTag(guideCardInfoVO.getRightTag());
        guideCardInfo.setBriefPrivilege(guideCardInfoVO.getBriefPrivilege());
        guideCardInfo.setCreateTime(new Date());
        guideCardInfo.setModifyTime(new Date());
        return guideCardInfo;
    }

字段少的时候勉强写一下,当字段非常多的时候需要写的代码就非常多,这时就可以用到BeanUtils中的copyProperties方法。

BeanUtils.copyProperties(guideCardInfo, guideCardInfoVO);

org.springframework.beans.BeanUtils中copyProperties(Object source, Object target)方法,方法API是这样写的:

Copy the property values of the given source bean into the target bean.
     * <p>Note: The source and target classes do not have to match or even be derived
     * from each other, as long as the properties match. Any bean properties that the
     * source bean exposes but the target bean does not will silently be ignored.

注意:BeanUtils.copyProperties(Object source, Object target)只能帮你复制同名且同类型的字段,其他不同名或不同类型的字段会被忽略。
虽然属性复制具有局限性,但已经可以让我们少写很多set代码,其余需要特殊处理的字段我们再另外处理即可。

相关文章

网友评论

      本文标题:BeanUtils.copyProperties

      本文链接:https://www.haomeiwen.com/subject/ftvlpqtx.html