zoukankan      html  css  js  c++  java
  • 【工具】

    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;
        };
    }
  • 相关阅读:
    借助NetFlow Analyzer的IPAM SPM插件,轻松实现IP和交换机端口管理
    补丁日微软修复了129个漏洞,学习补丁管理最佳实践
    如何通过组策略映射驱动器?
    如何预防磁盘使用率过高?
    ITIL是什么意思?
    Applications Manager—打造最佳云监控策略
    Microsoft 365独家安全解决方案
    怎么让Chrome支持小于12px 的文字?
    vue Router的使用
    vue项目中随机生成验证码
  • 原文地址:https://www.cnblogs.com/lycsmzl/p/13391758.html
Copyright © 2011-2022 走看看