copyProperties只是对单对象的转化,在此封装了一个可以把对象集合都转化的工具类,仅供参考
例如:BeanUtils.batchTransform(NamespaceDTO.class, groups);
等同于copyProperties
public static <T> T transform(Class<T> clazz, Object src) {
if (src == null) {
return null;
}
T instance;
try {
instance = clazz.newInstance();
} catch (Exception e) {
throw new BeanUtilsException(e);
}
org.springframework.beans.BeanUtils.copyProperties(src, instance, getNullPropertyNames(src));
return instance;
}
//批量
public static <T> List<T> batchTransform(final Class<T> clazz, List<?> list) {
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyList();
}
List<T> result = new ArrayList<>(list.size());
for (Object srcObject : list) {
result.add(transform(clazz, srcObject));
}
return result;
}
用stream转化,内部调用copy:
Example<Work> example = Example.of(work);
List<Work> workList = workService.findAll(example);
return workList .stream().map(this::toWorkDto).collect(Collectors.toList());
private WorkDto toWorkDto(Work work) {
WorkDto workDto = new WorkDto();
BeanUtils.copyProperties(work, workDto);
if (!StringUtils.isEmpty(work.getPages())) {
workDto.setPages(JSON.parseArray(work.getPages()));
}
return workDto;
}