dozermapper《对象复制》处理工具

maven地址:

使用6.0版本 其他版本使用方法有所不同

        <dependency>
            <groupId>com.github.dozermapper</groupId>
            <artifactId>dozer-core</artifactId>
            <version>6.0.0</version>
        </dependency>

 

工具类代码,支持过滤null属性不复制的功能。

 

package com.softium.platform.common.utils;

import org.dozer.DozerBeanMapper;
import org.dozer.loader.api.BeanMappingBuilder;
import org.dozer.loader.api.TypeMappingOptions;

import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
//import org.dozer.loader.api.TypeMappingOptions.mapEmptyString;

public class VoPoConverter {

    //    private static Mapper dozer = DozerBeanMapperBuilder.buildDefault();
    private static DozerBeanMapper dozer = new DozerBeanMapper();

    /**
     * 将src对象中的属性值复制到desc对象的同名属性中
     * @param src 源
     * @param desc 目标
     */
    public static void copyProperties(Object src, Object desc){
        dozer.map(src, desc);
    }
    
    /**
     * 将src对象中的属性值复制到新建的desc对象的同名属性中
     * @param src 源
     * @param descClass 目标class
     * @return
     */
    public static <T> T copyProperties(Object src, Class<T> descClass){
        if(src == null )
            return null;
        return (T)dozer.map(src, descClass);
    }
    
    /**
     * 将srcList中的元素复制到元素类型为descClass的List集合中
     * @param srcList  源list
     * @param descClass 目标list
     * @return
     */
    public static <T> List<T> copyList(@SuppressWarnings("rawtypes") List srcList, Class<T> descClass){
        List<T> descList = new ArrayList<T>();
        if (srcList != null){
            for (Object obj : srcList){
                T t = VoPoConverter.copyProperties(obj, descClass);
                descList.add(t);
            }
        }
        return descList;
    }
    
    
    /**
     * 
    * @Description: copy对象方法,当属性值是null的时候 不赋值,适用于对象修改。
    * @param sources  源
    * @param destination 目标
    *
    * @version: v1.0.0
    * @author: lp
    * @date: 2019年7月18日 下午3:15:58
    *
     */
    public static void copyPropertiesNotNull(final Object sources, final Object destination) {

        WeakReference weakReference = new WeakReference(new DozerBeanMapper());
        DozerBeanMapper mapper = (DozerBeanMapper) weakReference.get();

        mapper.addMapping(new BeanMappingBuilder() {

            @Override
            protected void configure() {
                mapping(sources.getClass(), destination.getClass(),TypeMappingOptions.mapNull(false), TypeMappingOptions.mapEmptyString(false));
            }
        });
        mapper.map(sources, destination);
        mapper.destroy();
        weakReference.clear();
    }
}

 

posted @ 2019-07-18 17:44  十年之前  阅读(2319)  评论(0编辑  收藏  举报