解决BeanUtils.copyProperties不能复制集合类型

本文介绍了在Java开发中遇到的问题:Spring的BeanUtils.copyProperties无法直接复制包含集合类型的属性。通过示例代码展示了如何通过循环遍历实现从DTO到VO的集合属性复制。同时,提及了BeanUtils进行的是浅复制,并简要说明了深复制的概念。
摘要由CSDN通过智能技术生成

解决BeanUtils.copyProperties不能复制集合类型

1.背景:

日常项目中,后台从“数据库”中获取的数据用DTO实体类接收,后台返回给“前台”的实体类是VO。 DTO和VO的属性字段个数大致相同(一般来说VO可能比DTO多)。 工作中,我们经常使用的是Spring的工具类BeanUtils.copyProperties对bean属性进行复制,BeanUtils.copyProperties只能对单个实体类进行复制,不能对封装多个实体类的list集合进行复制

2.代码示例:

List<DeviceHistoryVideoListDto> deviceHistoryVideoListDtos = null;
deviceHistoryVideoListDtos = sipService.queryHistoryVideoList(oid, date, tenantId);
// DeviceHistoryVideoListDto和DeviceHistoryVideoListVo中的属性字段一模一样
 List<DeviceHistoryVideoListVo> deviceHistoryVideoListVos = new ArrayList<>();
 // 将deviceHistoryVideoListDtos集合里面的25条数据复制到deviceHistoryVideoListVos,结果deviceHistoryVideoListVos的size = 0
 BeanUtils.copyProperties(deviceHistoryVideoListDtos, deviceHistoryVideoListVos);

修改后的代码示例:

 for(DeviceHistoryVideoListDto deviceHistoryVideoListDto : deviceHistoryVideoListDtos){
       DeviceHistoryVideoListVo deviceHistoryVideoListVo = new DeviceHistoryVideoListVo();
       BeanUtils.copyProperties(deviceHistoryVideoListDto,deviceHistoryVideoListVo);
       deviceHistoryVideoListVos.add(deviceHistoryVideoListVo);
        }

BeanUtils.copyProperties其他特点

1.进行“浅复制”,“深复制”有待研究

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@来杯咖啡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值