场景
有两个对象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配置项:
- editable 限制的类或接口,必须为目标对象的实现接口或父类,用于限制拷贝的属性,例如一个类我只想复制其父类的一些属性,就可以将editable设置为父类。
- ignoreNullValue 是否忽略空值,当源对象的值为null时,true: 忽略而不注入此值,false: 注入null
- ignoreProperties 忽略的属性列表,设置一个属性列表,不拷贝这些属性值
- ignoreError 是否忽略字段注入错误
- 可以通过CopyOptions.create()方法创建一个默认的配置项,通过setXXX方法设置每个配置项。