资讯专栏INFORMATION COLUMN

BeanUtils.copyProperties在拷贝属性时忽略空值

李义 / 1413人阅读

摘要:最近在写一个小玩意的时候,需要在两个对象之间拷贝属性使用的是可是,有一个问题就是当对象的键值为时就会把对象的对应键值覆盖成空了这不科学所以找了下面的这个方式来解决

最近在写一个小玩意的时候,需要在两个对象之间拷贝属性

使用的是

BeanUtils.copyProperties

可是,有一个问题

就是当src对象的键值为Null时

就会把target对象的对应键值覆盖成空了

这不科学

所以找了下面的这个方式来解决

    public static String[] getNullPropertyNames (Object source) {
        final BeanWrapper src = new BeanWrapperImpl(source);
        java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();

        Set emptyNames = new HashSet();
        for(java.beans.PropertyDescriptor pd : pds) {
            Object srcValue = src.getPropertyValue(pd.getName());
            if (srcValue == null) emptyNames.add(pd.getName());
        }
        String[] result = new String[emptyNames.size()];
        return emptyNames.toArray(result);
    }

    public static void copyPropertiesIgnoreNull(Object src, Object target){
        BeanUtils.copyProperties(src, target, getNullPropertyNames(src));
    }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/65304.html

相关文章

  • 为什么阿里代码规约要求避免使用 Apache BeanUtils 进行属性拷贝

    摘要:于是我建议这位小伙伴使用了进行属性拷贝,这为我们的程序挖了一个坑阿里代码规约当我们开启阿里代码扫描插件时,如果你使用了进行属性拷贝,它会给你一个非常严重的警告。大名鼎鼎的提供的包,居然会存在性能问题,以致于阿里给出了严重的警告。 声明:本文属原创文章,始发于公号:程序员自学之道,并同步发布于 https://blog.csdn.net/dadiyang,特此,同步发布到 sf,转载请注...

    raledong 评论0 收藏0
  • BeanUtils工具使用细节

    摘要:拷贝操作又一个非常好用的工具类和中分别存在一个,提供了对。除了支持基本类型以及基本类型的数组之外,还支持这些类的对象,其余一概不支持。而且,由于这些类都是采用反射机制实现的,对程序的效率也会有影响。因此,慎用或者使用看效果如何 java bean拷贝操作又一个非常好用的工具类 BeanUitls :spring (org.springframework.beans.BeanUtils)...

    afishhhhh 评论0 收藏0
  • Spring Boot 中 crud如何优雅的实现-附代码

    摘要:以下内容基于如果你使用的也是相同的技术栈可以继续往下阅读,如果不是可以当作参考。编写的四种方式裸写最简单最粗暴也是使用最多的一种方式,在写的多了之后可以用生成工具生成。 导读 在目前接触过的项目中大多数的项目都会涉及到: crud相关的操作, 哪如何优雅的编写crud操作呢?带着这个问题,我们发现项目中大量的操作多是 创建实体 、删除实例、 修改实体、 查询单个实体、 分页查询多个实体...

    wing324 评论0 收藏0
  • Java BeanUtils对象复制工具类及方法

    1. BeanUtils.copyProperties(Object source, Object target) 用法: 讲source的属性值复制到target,属性为null时也会进行复制。 需求:排除null值进行复制 public class CopyObjectUtil { public static String[] getNullPropertyNames(Object...

    Kerr1Gan 评论0 收藏0
  • 利用反射和注解,拷贝类型相同,属性名不同的对象

    摘要:前言最近开发遇到一个问题,两个对象进行属性值拷贝。理论上来说可以直接借助来进行拷贝,奈何两个对象属性名不同,懵逼脸。 1、前言 最近开发遇到一个问题,两个对象进行属性值拷贝。理论上来说可以直接借助org.springframework.beans.BeanUtils.copyProperties(Object source, Object target)来进行拷贝,奈何两个对象属性名不...

    forrest23 评论0 收藏0

发表评论

0条评论

李义

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<