`
cuker919
  • 浏览: 88726 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Dozer更加灵活给对象赋值,对象间拷贝

 
阅读更多

项目中,经常会遇到各层对象之间相互进行值传递的过程,如在数据据持久层有一持久类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

分享到:
评论

相关推荐

    javaEE的对象拷贝工具dozer

    该文件是拷贝对象工具dozer相关的jar包和dozer的配置用法的详细说明,简洁实用。

    dozer复杂类型测试类.zip

    dozer 的配置Mapping,包含普通映射配置,List复杂类型配置。ReqParam.json 是转换类的参数值,StringUtils 读取文件。

    dozer的使用实例

    内含dozer的完整实例,以及jar包。dozer比BeanUtils更灵活,同时可以很容易地跟spring集成。也可以用注解@Mapping("asstManagerId")来代替xml配置

    dozer-5.5.1-API文档-中英对照版.zip

    赠送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-5.5.1.jar

    dozer的eclipse插件

    dozer的eclipse插件,使用该插件可以可视化编辑对应属性,简化你的编码工作

    dozer-user-guide

    dozer是一种JavaBean的映射工具,类似于apache的BeanUtils

    bingo-bean:对象拷贝,目标是比dozer更快,功能更强大,更完整的支持泛型

    bingo-bean对象拷贝,目标是比dozer更快,功能更强大,更完整的支持泛型1、该项目是复制对象的工具,创建目的是:a)、比Dozer、FastJson更快,占用内存更小b)、不同类型间的复制,包括对自定义泛型的深层识别,参见...

    dozer-5.3.2-src.zip

    dozer是一种JavaBean的映射工具,类似于apache的BeanUtils。但是dozer更强大,它可以灵活的处理复杂类型之间的映射

    dozer小例子-bean复制

    需要lib[dozer-5.0.jar, commons-lang.jar],有需要的请猛击下载

    springboot-dozer

    dozer是一种JavaBean的映射工具,类似于Apache的BeanUtils。它可以灵活地处理复杂类型之间的映射。不但可以进行简单的属性映射、复杂的类型映射、双向映射、递归映射等,并且可以通过XML配置文件进行灵活的配置。 ...

    dozer(PDF)

    有关于dozer的用法  毕业了~ 所有资料拿出来分享~ 难免有错误~多见谅~

    dozer5.2 jar包

    下载内容包含 commons-beanutils-1.7.0.jar commons-collections.jar commons-lang-2.5.jar dozer-5.2.0.jar等

    org.dozer JAR 包(实现java bean mapper)

    dozer是一款优秀的java bean映射开源框架,完成深度转换Bean&lt;-&gt;Bean的Mapper实现

    dozer 3.0.2

    好用简洁的开源mac osx下的菜单栏管理软件,完美替代Bartender

    dozer5.5.1 ( 可集成spring 及 OSGi )

    dozer5.5.1 ( 可集成spring 及 OSGi ) , 不论在spring及osgi 下均可使用 包含所有5.5.1 所依赖的jar包,可根据需求添加。

    复制bean的开源工具Dozer

    NULL 博文链接:https://gaojiewyh.iteye.com/blog/1528587

    Dozer 使用

    NULL 博文链接:https://bruceliu02.iteye.com/blog/1771227

    Dozer详解

    NULL 博文链接:https://zhizizhishou0104.iteye.com/blog/1965547

    dozer-5.5.0.jar

    dozer5.5.0.jar

Global site tag (gtag.js) - Google Analytics