数据实体转换工具类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/VVanity/article/details/73228268
package com.sf.framework.utils;

import java.util.Collection;
import java.util.List;

import org.springframework.beans.BeanUtils;

import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.base.Throwables;
import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;

/**
 * 数据实体转换
 * 
 * @author
 * @since version1.0
 */
public class ConvertDomainUtils {

    /**
     * list列表类型转换类
     * 
     * @param sources 原始数据list列表
     * @param targetClass 转换后的class
     * @param filters 目的类型的实例中的不需要设置的字段名称
     * @return 目的类型实例list列表
     */
    public final static <S, T> List<T> convertList(List<S> sources, final Class<T> targetClass, final String... filters) {
        Optional<List<S>> absentList = Optional.of(sources);
        if (absentList.isPresent()) {
            Collection<T> transformColl = Collections2.transform(absentList.get(), new Function<S, T>() {
                public T apply(S input) {
                    return convertObject(input, targetClass, filters);
                }
            });

            return Lists.newArrayList(transformColl);
        }

        return Lists.newArrayList();
    }

    /**
     * 类型转换类
     * 
     * @param source 原始类型实例
     * @param target 目的类型
     * @param filters 目的类型的实例中的不需要设置的字段名称
     * @return 目的类型实例
     */
    public final static <S, T> T convertObject(S source, Class<T> target, String... filters) {
        T t = null;
        try {
            t = target.newInstance();
            BeanUtils.copyProperties(Optional.of(source).get(), t, filters);
        } catch (Exception e) {
            Throwables.propagateIfPossible(e);
        }

        return t;
    }

}

猜你喜欢

转载自blog.csdn.net/VVanity/article/details/73228268