--- title: Java封装orika实现对象拷贝 date: 2020-06-19 13:10:57 description: Java封装orika实现对象拷贝 categories: [技术总结] tags: [Java] --- ## 说明 一直使用orika复制对象,最近偶然发现了orika还有属性复制的功能,研究后封装了一下,以后用起来就更方便了 ### pom.xml ```xml ma.glasnost.orika orika-core 1.4.6 ``` ### 工具类 - 做了简单的封装,按业务需要可以选择是否覆盖空值 - 还有很多更灵活的配置暂时没用到,比如可以指定不同名字、不同类型字段的映射关系,这些等以后有需求的时候再加上 ```java BeanMapper.java import ma.glasnost.orika.MapperFacade; import ma.glasnost.orika.MapperFactory; import ma.glasnost.orika.impl.DefaultMapperFactory; import java.util.List; /** * 简单封装orika, 实现深度转换Bean<->Bean的Mapper. */ public class BeanMapper { private static MapperFacade defaultMapper; private static MapperFacade ignoreNullMapper; static { MapperFactory defaultMapperFactory = new DefaultMapperFactory.Builder().build(); defaultMapper = defaultMapperFactory.getMapperFacade(); MapperFactory ignoreNullMapperFactory = new DefaultMapperFactory.Builder().mapNulls(false).build(); ignoreNullMapper = ignoreNullMapperFactory.getMapperFacade(); } /** * 复制对象的属性(忽略null) */ public static void mapIgnoreNull(S sourceObject, D destinationObject) { ignoreNullMapper.map(sourceObject, destinationObject); } /** * 复制对象的属性 */ public static void map(S sourceObject, D destinationObject) { defaultMapper.map(sourceObject, destinationObject); } /** * 复制对象 */ public static D map(S source, Class destinationClass) { return defaultMapper.map(source, destinationClass); } /** * 复制对象list */ public static List mapList(Iterable sourceList, Class destinationClass) { return defaultMapper.mapAsList(sourceList, destinationClass); } } ```