项目中,经常会遇到各层对象之间相互进行值传递的过程,如在数据据持久层有一持久类ClassA,在视图层可能会变为ViewA,通常情况下,如果两个类结构一样,最常使用的是BeanUtils.copyProperties(src,aim)方法将一个对象的值赋给另一个对象!但是如果属性不同或者名称不同,则需要Dozer来完成,通过灵活的配置,达到不同对象间的拷贝!
如下:
一个XML配置文件:dozerBeanMapping.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mappings PUBLIC "-//DOZER//DTD MAPPINGS//EN"
"http://dozer.sourceforge.net/dtd/dozerbeanmapping.dtd">
<mappings>
<!-- <class-a>指定所要复制的源对象,<class-b>复制的目标对象,<a>源对象的属性名, <b>目标对象的属性名。
wildcard默认为true,在此时默认对所有属性进行map,如果为false,则只对在xml文件中配置的属性进行map。 -->
<configuration>
<stop-on-errors>false</stop-on-errors>
<date-format>MM/dd/yyyy HH:mm</date-format>
<wildcard>true</wildcard>
</configuration>
<mapping>
<class-a>com.njusc.view.BoxView</class-a>
<class-b>com.njusc.view.DepView</class-b>
<field>
<a>boxId</a>
<b>depId</b>
</field>
<field>
<a>depName</a>
<b>depName</b>
</field>
</mapping>
</mappings>
下面两个简单的类
package com.njusc.view;
public class BoxView
{
private String boxId;
private String depName;
public String getBoxId() {
return boxId;
}
public void setBoxId(String boxId) {
this.boxId = boxId;
}
public String getDepName() {
return depName;
}
public void setDepName(String depName) {
this.depName = depName;
}
}
package com.njusc.view;
public class DepView {
private String depId;
private String depName;
public String getDepId() {
return depId;
}
public void setDepId(String depId) {
this.depId = depId;
}
public String getDepName() {
return depName;
}
public void setDepName(String depName) {
this.depName = depName;
}
}
下面看具体的操作:
package com.njusc.util;
import java.util.ArrayList;
import java.util.List;
import org.dozer.DozerBeanMapper;
import com.njusc.view.BoxView;
import com.njusc.view.DepView;
public class DozerBeanMapperUtil {
public static void main(String[] args) {
BoxView bv = new BoxView();
bv.setBoxId("1234");
bv.setDepName("测试");
DozerBeanMapper mapper=new DozerBeanMapper();
BoxView newbv = new BoxView();
//mapper.map(bv, newbv); //这种方式或下面的方式都可以
newbv = (BoxView)mapper.map(bv, BoxView.class);
System.out.println(newbv.getDepName()+newbv.getBoxId());
DozerBeanMapper mapper1=new DozerBeanMapper();
List myMappingFiles = new ArrayList();
myMappingFiles.add("dozerBeanMapping.xml");
mapper1.setMappingFiles(myMappingFiles);
DepView dep = new DepView();
//不同对象间拷贝
mapper1.map(bv, dep);
System.out.println(dep.getDepId()+dep.getDepName());
}
}
通过mapper.setMappingFiles()设置映射文件,可以添加多个配置文件,也可以把所有的映射写在一个配置文件里面。 更多复杂例子请见它自带的doc。
dozer-5.0.jar (155.1 KB)包下载地址:http://dl.javaeye.com/topics/download/320009d9-b368-3f77-aaf0-7cc8e4c0fadd
分享到:
相关推荐
该文件是拷贝对象工具dozer相关的jar包和dozer的配置用法的详细说明,简洁实用。
dozer 的配置Mapping,包含普通映射配置,List复杂类型配置。ReqParam.json 是转换类的参数值,StringUtils 读取文件。
内含dozer的完整实例,以及jar包。dozer比BeanUtils更灵活,同时可以很容易地跟spring集成。也可以用注解@Mapping("asstManagerId")来代替xml配置
赠送jar包:dozer-5.5.1.jar; 赠送原API文档:dozer-5.5.1-javadoc.jar; 赠送源代码:dozer-5.5.1-sources.jar; 赠送Maven依赖信息文件:dozer-5.5.1.pom; 包含翻译后的API文档:dozer-5.5.1-javadoc-API文档-...
dozer-5.5.1.jar dozer-5.5.1.jar dozer-5.5.1.jar dozer-5.5.1.jar
dozer的eclipse插件,使用该插件可以可视化编辑对应属性,简化你的编码工作
dozer是一种JavaBean的映射工具,类似于apache的BeanUtils
bingo-bean对象拷贝,目标是比dozer更快,功能更强大,更完整的支持泛型1、该项目是复制对象的工具,创建目的是:a)、比Dozer、FastJson更快,占用内存更小b)、不同类型间的复制,包括对自定义泛型的深层识别,参见...
dozer是一种JavaBean的映射工具,类似于apache的BeanUtils。但是dozer更强大,它可以灵活的处理复杂类型之间的映射
需要lib[dozer-5.0.jar, commons-lang.jar],有需要的请猛击下载
dozer是一种JavaBean的映射工具,类似于Apache的BeanUtils。它可以灵活地处理复杂类型之间的映射。不但可以进行简单的属性映射、复杂的类型映射、双向映射、递归映射等,并且可以通过XML配置文件进行灵活的配置。 ...
有关于dozer的用法 毕业了~ 所有资料拿出来分享~ 难免有错误~多见谅~
下载内容包含 commons-beanutils-1.7.0.jar commons-collections.jar commons-lang-2.5.jar dozer-5.2.0.jar等
dozer是一款优秀的java bean映射开源框架,完成深度转换Bean<->Bean的Mapper实现
好用简洁的开源mac osx下的菜单栏管理软件,完美替代Bartender
dozer5.5.1 ( 可集成spring 及 OSGi ) , 不论在spring及osgi 下均可使用 包含所有5.5.1 所依赖的jar包,可根据需求添加。
NULL 博文链接:https://gaojiewyh.iteye.com/blog/1528587
NULL 博文链接:https://bruceliu02.iteye.com/blog/1771227
NULL 博文链接:https://zhizizhishou0104.iteye.com/blog/1965547
dozer5.5.0.jar