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(); } }