解决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.进行“浅复制”,“深复制”有待研究