• 【工具】


    public class BeanPlusUtils extends BeanUtils {
        public static <S, T> List<T> copyListProperties(List<S> sources, Supplier<T> target) {
            return copyListProperties(sources, target, null);
        }
    
        public static <S, T> T copySingleProperties(S source, Supplier<T> target) {
            return copySingleProperties(source, target, null);
        }
    
        /**
         * 使用场景:Entity、Bo、Vo层数据的复制,因为BeanUtils.copyProperties只能给目标对象的属性赋值,却不能在List集合下循环赋值,因此添加该方法
         * 如:List<AdminEntity> 赋值到 List<AdminVo> ,List<AdminVo>中的 AdminVo 属性都会被赋予到值
         * S: 数据源类 ,T: 目标类::new(eg: AdminVo::new)
         */
        public static <S, T> List<T> copyListProperties(List<S> sources, Supplier<T> target,
                                                        ColaBeanUtilsCallBack<S, T> callBack) {
            if (CollectionUtils.isEmpty(sources)){
                return new ArrayList<>();
            }
            List<T> list = new ArrayList<>(sources.size());
            for (S source : sources) {
                T t = target.get();
                copyProperties(source, t);
                list.add(t);
                if (callBack != null) {
                    // 回调
                    callBack.callBack(source, t);
                }
            }
            return list;
        }
    
        public static <S, T> T copySingleProperties(S source, Supplier<T> target, ColaBeanUtilsCallBack<S, T> callBack) {
            T t = target.get();
            copyProperties(source, t);
            if (callBack != null) {
                // 回调
                callBack.callBack(source, t);
            }
            return t;
        }
    
        @FunctionalInterface
        public interface ColaBeanUtilsCallBack<S, T> {
    
            void callBack(S t, T s);
        }
    
        /**
         * 将集合对象中的类型转换成另一种类型
         *
         * @param collection 集合
         * @param clazz      目标对象
         * @param <T>
         * @return
         */
        public static <T> Collection<T> covertObject(Collection<?> collection, Class<T> clazz) {
            Collection<T> newCollection = collection.stream().map(oldObject -> {
                T instance = null;
                try {
                    instance = clazz.newInstance();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                BeanUtils.copyProperties(oldObject, instance);
                return instance;
            }).collect(Collectors.toList());
            return newCollection;
        };
    }
  • 相关阅读:
    每天1题算法题(4)-合并二叉树 (√)
    每天1题算法题(3)-二叉树的最大深度 (√)
    每天1题算法题(2)-二叉树的层序遍历
    每天1题算法题(1)-二叉树的中序遍历
    uni-app登录页白屏
    uni-app真机运行顶部导航栏右边按钮显示不全的问题处理
    uni-app强制横屏设置
    uni-app离线打包步骤
    银行数据仓库体系实践(18)--数据应用之信用风险建模
    银行数据仓库体系实践(17)--数据应用之营销分析
  • 原文地址:https://www.cnblogs.com/lycsmzl/p/13391758.html
Copyright © 2020-2023  润新知