dozer是什么?
在开发过程中,常常会涉及到对象之间的转换,bean到dto到vo等等,dozer便是很好的一个对象转换的组件。它可以将一个对象递归拷贝到另外一个对象。既支持简单的对象映射,也支持复杂的对象映射。
对象映射
dozer支持两种映射方式,调用api的简单映射方式和使用xml的映射方式。api调用的方式约束我们定义的两个bean中的成员变量名要一样,方便自动映射,至于类型可以不一样,比如类A的成员变量 ++Integer num++ 和类B的 ++String num++ 是可以直接映射的。xml的方式是通过编写xml文件来定义映射规则。
dozer使用
使用dozer时,只需要加上dozer的依赖即可,下面以maven为例(版本号可以根据最新的做修改):
1 2 3 4 5
| <dependency> <groupId>com.github.dozermapper</groupId> <artifactId>dozer-core</artifactId> <version>6.2.0</version> </dependency>
|
如下是以简单映射方式封装的uitl:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public class BeanMapperUtils {
private static Mapper MAPPER = DozerBeanMapperBuilder.buildDefault();
public static <T> T map(Object source, Class<T> destinationClass) { if (source == null) { return null; } return MAPPER.map(source, destinationClass); }
public static void map(Object source, Object destination) { MAPPER.map(source, destination); }
public static <T> List<T> mapList(Collection sourceList, Class<T> destinationClass) { List<T> destinationList = new ArrayList<>(); for (Object sourceObject : sourceList) { destinationList.add(MAPPER.map(sourceObject, destinationClass)); } return destinationList; } }
|
关于dozer的详细介绍,以及通过编写xml的使用方式,详见官方文档。