dozer是什么?
在开发过程中,常常会涉及到对象之间的转换,bean到dto到vo等等,dozer便是很好的一个对象转换的组件。它可以将一个对象递归拷贝到另外一个对象。既支持简单的对象映射,也支持复杂的对象映射。
对象映射
dozer支持两种映射方式,调用api的简单映射方式和使用xml的映射方式。api调用的方式约束我们定义的 两个bean中的成员变量名要一样
,方便自动映射,至于类型可以不一样,比如类A的成员变量 Integer num 和类B的 String num 是可以直接映射的。xml的方式是通过编写xml文件来定义映射规则。
dozer使用
使用dozer时,只需要加上dozer的依赖即可,下面以maven为例(版本号可以根据最新的做修改):
<dependency>
<groupId>com.github.dozermapper</groupId>
<artifactId>dozer-core</artifactId>
<version>6.2.0</version>
</dependency>
实例
/**
* @Title: EntityObjectConverter.java
* @Package com.joyce.util
* @Copyright: Copyright (c) 2013
*
* @author Comsys-LZP
* @date 2013-11-4 上午09:55:14
* @version V2.0
*/
package com.joyce.util;
import java.util.ArrayList;
import java.util.List;
import net.sf.dozer.util.mapping.DozerBeanMapper;
/**
* @Description: 两个对象间,相同属性名之间进行转换
*
* @ClassName: EntityObjectConverter
* @Copyright: Copyright (c) 2013
*
* @author Comsys-LZP
* @date 2013-11-4 上午09:55:14
* @version V2.0
*/
public class EntityObjectConverter {
/*
* 实例化对象
*/
private static DozerBeanMapper map = new DozerBeanMapper();
/**
* @Description: 将目标对象转换为指定对象,相同属性名进行属性值复制
*
* @Title: EntityObjectConverter.java
* @Copyright: Copyright (c) 2013
*
* @author Comsys-LZP
* @date 2013-11-4 下午02:32:34
* @version V2.0
*/
@SuppressWarnings("unchecked")
public static <T> T getObject(Object source,Class<T> cls){
if (source==null) {
return null;
}
return (T) map.map(source, cls);
}
/**
* @Description: 两个对象之间相同属性名的属性值复制
*
* @Title: EntityObjectConverter.java
* @Copyright: Copyright (c) 2013
*
* @author Comsys-LZP
* @date 2013-11-4 下午02:33:56
* @version V2.0
*/
public static void setObject(Object source,Object target){
map.map(source, target);
}
/**
* @Description: 对象集合中对象相同属性名的属性值复制
*
* @Title: EntityObjectConverter.java
*
* @Copyright: Copyright (c) 2013
* @author Comsys-LZP
* @date 2013-11-4 下午02:34:26
* @version V2.0
*/
@SuppressWarnings("unchecked")
public static List getList(List source,Class cls){
List listTarget = new ArrayList();
if(source != null){
for (Object object : source) {
Object objTarget = EntityObjectConverter.getObject(object, cls);
listTarget.add(objTarget);
}
}
return listTarget;
}
}
参考链接
PREVIOUSFastJson工具包