BeanUtils只拷贝对象非null属性

在最近做项目的时候,使用到了对象copy,而只需要拷贝源对象的非空属性,为null的属性不进行吧copy。

BeanUtil.copyProperties(sourceObject,targetObject);

查了资料,解决方法如下:

1 、hutool开源库为我们提供了更为强大的Bean工具-BeanUtil

引入依赖

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>4.1.14</version>
</dependency>
//复制旧的属性过来,忽略null属性,忽略null值,有值的以新的为主,null的则以旧为主
BeanUtil.copyProperties(sourceObject, targetObject,
        true, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
BeanUtils.copyProperties方法是Apache Commons BeanUtils库中的一个工具方法,用于将一个Java对象属性拷贝到另一个Java对象中。它可以实现对象之间的属性值复制,无需手动逐个设置属性。 使用BeanUtils.copyProperties方法进行属性拷贝时,需要注意以下几点: 1. 属性名称和类型必须在源对象和目标对象中存在且匹配。 2. 属性值的拷贝是基于属性名称进行匹配的,而不是基于属性的位置。 3. 如果源对象和目标对象中存在相同名称但类型不匹配的属性,会抛出ConversionException异常。 4. 如果源对象中的属性值为null,则目标对象对应的属性值也会被设置为null。 5. 如果源对象和目标对象中存在嵌套对象,也会进行递归拷贝。 下面是一个示例代码,演示了如何使用BeanUtils.copyProperties方法进行属性拷贝: ```java import org.apache.commons.beanutils.BeanUtils; public class Main { public static void main(String[] args) { SourceObject source = new SourceObject(); source.setName("John"); source.setAge(25); TargetObject target = new TargetObject(); try { BeanUtils.copyProperties(target, source); System.out.println(target.getName()); // 输出:John System.out.println(target.getAge()); // 输出:25 } catch (Exception e) { e.printStackTrace(); } } } class SourceObject { private String name; private int age; // 省略getter和setter方法 } class TargetObject { private String name; private int age; // 省略getter和setter方法 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值