需求:将 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



腾讯云社区邀请各位技术博主加入,福利多多噢!
Last modification:January 22nd, 2021 at 11:19 pm
如果觉得我的文章对你有用,请随意赞赏