maven导入
<!-- https://mvnrepository.com/artifact/net.sf.dozer/dozer -->
<dependency>
<groupId>net.sf.dozer</groupId>
<artifactId>dozer</artifactId>
<version>5.5.1</version>
</dependency>
使用
硬编码
dozer使用教程 https://blog.csdn.net/drdongshiye/article/details/87027855
工具类1
public class DozerUtil {
private DozerUtil() {
}
/**
* 持有Dozer单例, 避免重复创建DozerMapper消耗资源.
*/
private static DozerBeanMapper dozer = new DozerBeanMapper();
/**
* 基于Dozer转换对象的类型.
*/
public static <T> T map(Object source, Class<T> destinationClass) {
return dozer.map(source, destinationClass);
}
/**
* 基于Dozer转换Collection中对象的类型.
*/
public static <T> List<T> mapList(Collection<?> sourceList, Class<T> destinationClass) {
List<T> destinationList = Lists.newArrayList();
for (Object sourceObject : sourceList) {
T destinationObject = dozer.map(sourceObject, destinationClass);
destinationList.add(destinationObject);
}
return destinationList;
}
/**
* 基于Dozer将对象A的值拷贝到对象B中.
*/
public static void copy(Object source, Object destinationObject) {
dozer.map(source, destinationObject);
}
}
工具类2
public class BeanUtil {
private BeanUtil() {
}
private static final DozerBeanMapper DOZER = newInstance();
/**
* 把source中的值复制到target
*/
public static void copy(Object source, Object target) {
if (null == source || null == target) {
return;
}
DOZER.map(source, target);
}
/**
* 把source中的值复制到target
*/
public static <T> T copy(Object source, Class<T> target) {
return null == source || null == target ? null : DOZER.map(source, target);
}
/**
* Copy List集合时可用
*/
@SuppressWarnings("unchecked")
public static <T> List<T> copy(List<T> source) {
return new ArrayList<T>(source.size()) {
private static final long serialVersionUID = 1L;
{
for (T src : source) {
add((T) copy(src, src.getClass()));
}
}
};
}
/**
* Copy List集合时可用[重载]
*/
public static <E> List<E> copy(List<?> source, Class<E> target) {
return new ArrayList<E>(source.size()) {
private static final long serialVersionUID = 1L;
{
for (Object src : source) {
add(copy(src, target));
}
}
};
}
/**
* Bean属性输出为Map
*/
public static Map<String, Object> toMap(Object obj) {
if (null == obj) {
return null;
}
Map<String, Object> retMap = new LinkedHashMap<String, Object>();
for (Class<?> clazz = obj.getClass(); !clazz.isAssignableFrom(Object.class); ) {
for (Field field : clazz.getDeclaredFields()) {
if (!Modifier.isStatic(field.getModifiers())) {
try {
field.setAccessible(true);
Object val = field.get(obj);
if (null != val) {
retMap.put(field.getName(), val);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
clazz = clazz.getSuperclass();
}
return retMap;
}
/**
* 返回默认实例
*/
public static DozerBeanMapper newInstance() {
return new DozerBeanMapper();
}
}
spring中使用
dozer 简单用法 https://www.cnblogs.com/jonney-wang/p/6663860.html
错误
深度复制需要有空构造方法
org.dozer.MappingException: java.lang.NoSuchMethodException: com.chinaredstar.contract.mis.model.dto.ContractAttachDTO.<init>()