需求:将 List 集合拷贝到另一个 Bean 集合。
Spring 自带的 BeanUtils 不可以直接拷贝集合,所以自己封装了一个工具类,注意:并没有从本质上解决该问题。
@Slf4j
public class BeanUtils {
/**
* 单个类转换
*
* @param sourceObj
* @param targetClass
* @param <T>
* @return
*/
public static <T> T conver(Object sourceObj, Class<T> targetClass) {
T targetObj = null;
try {
targetObj = targetClass.newInstance();
} catch (InstantiationException e) {
log.error("sourceObj:{},targetClass:{},InstantiationException errMsg:{}", sourceObj, targetClass, e);
} catch (IllegalAccessException e) {
log.error("sourceObj:{},targetClass:{},IllegalAccessException errMsg:{}", sourceObj, targetClass, e);
}
BeanUtils.copyProperties(sourceObj, targetObj);
return targetObj;
}
/**
* List之间转换
*
* @param sourceList
* @param targetClass
* @param <T>
* @return
*/
public static <T> List<T> converList(List<?> sourceList, Class<T> targetClass) {
if (CollectionUtils.isEmpty(sourceList) || targetClass == null) {
return Collections.emptyList();
}
return sourceList.stream().map(sourceObj -> conver(sourceObj, targetClass)).collect(Collectors.toList());
}
}
使用方法:
List<SasStudent> studentList = iSasStudentService.list(queryWrapper);
List<ClassStudentList> classStudentList = BeanUtils.converList(studentList, ClassStudentList.class);
参考资料:https://blog.csdn.net/weixin_44722978/article/details/106276248
版权属于:乐心湖's Blog
本文链接:https://cloud.tencent.com/developer/article/1774963
声明:博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!