BeanUtils.copyProperties忽略null值 只拷贝非null属性

场景

有两个对象a和b,需要把需要把a对象的属性拷贝到b对象,b对象有些属性有值,a对象同属性是null值,如果直接拷贝的话会吧b对象中的同属性拷贝成null。

解决方案

在这个场景下就要用强大的hutool BeanUtil了

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>>5.3.5</version>
</dependency>
BeanUtil.copyProperties(a,b,CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
核心代码是CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true)

详情可以参考官方文档 http://hutool.mydoc.io/#text_319433

CopyOptions配置项:

  1. editable 限制的类或接口,必须为目标对象的实现接口或父类,用于限制拷贝的属性,例如一个类我只想复制其父类的一些属性,就可以将editable设置为父类。
  2. ignoreNullValue 是否忽略空值,当源对象的值为null时,true: 忽略而不注入此值,false: 注入null
  3. ignoreProperties 忽略的属性列表,设置一个属性列表,不拷贝这些属性值
  4. ignoreError 是否忽略字段注入错误
  5. 可以通过CopyOptions.create()方法创建一个默认的配置项,通过setXXX方法设置每个配置项。
# java   工具   优化   反射  

评论

企鹅群:39438021

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×