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