`

Dozer 使用

阅读更多
Dozer用于 model 之间转换
Maven 引用dozer 5.4.0
<dependency>
    <groupId>net.sf.dozer</groupId>
    <artifactId>dozer</artifactId>
    <version>5.4.0</version>
</dependency>

1. Book
package entity;

public class Book {

	private String name;
	private String author;
	private String test;

	public Book() {

	}

	public void setAuthor(String author) {
		this.author = author;
	}

	public String getAuthor() {
		return (this.author);
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getTest() {
		return test;
	}

	public void setTest(String test) {
		this.test = test;
	}

	public String getName() {
		return this.name;
	}
}

2. BookDTO
package entity;

public class BookDTO {
	private String bookName;
	private String author;
	public String getBookName() {
		return bookName;
	}
	public void setBookName(String bookName) {
		this.bookName = bookName;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	
}

3. dozerBeanMapping.xml 配置对象的映射
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mappings PUBLIC "-//DOZER//DTD MAPPINGS//EN"
"http://dozer.sourceforge.net/dtd/dozerbeanmapping.dtd">
<mappings>
	<configuration>
		<stop-on-errors>false</stop-on-errors>
		<date-format>MM/dd/yyyy HH:mm</date-format>
		<wildcard>true</wildcard>
	</configuration>
	<mapping>
		<class-a>entity.Book</class-a>
		<class-b>entity.BookDTO</class-b>
		<field>
			<a>name</a>
			<b>bookName</b>
		</field>
		<field>
			<a>author</a>
			<b>author</b>
		</field>
	</mapping>
</mappings>

4. 测试类
package dozer.test;

import java.util.ArrayList;
import java.util.List;

import org.dozer.DozerBeanMapper;
import org.dozer.DozerBeanMapperSingletonWrapper;
import org.dozer.Mapper;

import entity.Book;
import entity.BookDTO;

public class DozerDemoTest {
	public static void main(String[] args) {
		Book book1 = new Book();
		book1.setAuthor("dennis");
		book1.setName("dozer demo");
		book1.setTest("test fields");
		DozerBeanMapper mapper = new DozerBeanMapper();
		Book book2 = new Book();
		mapper.map(book1, book2);
		book2 = (Book) mapper.map(book1, Book.class);
		System.out.println("book2's name:" + book2.getName());
		
		DozerBeanMapper mapper2 = new DozerBeanMapper();
		List myMappingFiles = new ArrayList();
		myMappingFiles.add("dozerBeansMapping.xml");
		mapper2.setMappingFiles(myMappingFiles);
		
		BookDTO bookDto = mapper2.map(book1, BookDTO.class);
		System.out.println(bookDto.toString());
				
		Mapper mapper3 = DozerBeanMapperSingletonWrapper.getInstance();
		BookDTO bookDto3 = mapper3.map(book1, BookDTO.class);
	}

}


二. Dozer 用spring管理
项目引用Spring jar包
新建spring 配置文件 spring-dozer.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
	<context:annotation-config />

	<bean id="mapper" class="org.dozer.spring.DozerBeanMapperFactoryBean">
		<property name="mappingFiles">
			<list>
				<!-- <value>dozer-global-configuration.xml</value> -->
				<value>dozer-bean-mappings.xml</value>
				<!-- <value>more-dozer-bean-mappings.xml</value> -->
			</list>
		</property>
	</bean>
</beans>

新建dozer映射配置文件 dozer-bean-mappings.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mappings PUBLIC "-//DOZER//DTD MAPPINGS//EN"
"http://dozer.sourceforge.net/dtd/dozerbeanmapping.dtd">

<mappings>
	<configuration>
		<stop-on-errors>false</stop-on-errors>
		<date-format>MM/dd/yyyy HH:mm</date-format>
		<wildcard>true</wildcard>
	</configuration>
	<mapping>
		<class-a>entity.Book</class-a>
		<class-b>entity.BookDTO</class-b>
		<field>
			<a>name</a>
			<b>bookName</b>
		</field>
		<field>
			<a>author</a>
			<b>author</b>
		</field>
	</mapping>
</mappings>

新建测试类
package dozer.test;

import org.dozer.Mapper;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import entity.Book;
import entity.BookDTO;

public class DozerWithSpringTest {
	public static void main(String[] args) {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-dozer.xml");
		Book book1 = new Book();
		book1.setAuthor("dennis");
		book1.setName("dozer demo");
		book1.setTest("test fields");
		Mapper mapper = (Mapper) ctx.getBean("mapper");
		BookDTO bookDto =  mapper.map(book1, BookDTO.class);

	}

}


三、 不用spring, 但是dozer mapper要单例, dozer 映射文件可以不用dozerBeanMapping.xml
/** 
* dozer单例的wrapper.

* dozer在同一jvm里使用单例即可,无需重复创建.
* 但Dozer4.0自带的DozerBeanMapperSingletonWrapper必须使用dozerBeanMapping.xml作参数初始化,因此重新实现.
*  
 * 实现PO到VO的深层次复制 
 */  
public class DozerMapperSingleton {  
  
    private static Mapper instance;  
  
    private DozerMapperSingleton() {  
        //shoudn't invoke.  
    }  
  
    public static synchronized Mapper getInstance() {  
        if (instance == null) {  
            instance = new DozerBeanMapper();  
        }  
        return instance;  
    }  
  
}  
  

用的时候直接获取实例就OK了, 
AgentContractInfo info=new AgentContractInfo ();//假设这个对象是有值的 
AgentContract acr = new AgentContract(); 
DozerMapperSingleton.getInstance().map(info, acr);  
//这样 info对象中的所有属性复制到info中去了

四、Only Using one mapping file:
A file called dozerBeanMapping.xml file will be loaded if it is in your Classpath. You can find a sample of this file in the {dozer.home}/mappings directory.
这样就不用spring去管理了
Mapper mapper = DozerBeanMapperSingletonWrapper.getInstance();
DestinationObject destObject = 
    mapper.map(sourceObject, DestinationObject.class);

or

Mapper mapper = DozerBeanMapperSingletonWrapper.getInstance();
DestinationObject destObject = new DestinationObject();
mapper.map(sourceObject, destObject);
分享到:
评论

相关推荐

    Dozer 使用总结,也许对你有帮助

    在这个总结中,我们将深入探讨 Dozer 的核心功能、使用场景以及如何在项目中有效地利用它。 首先,让我们理解什么是对象映射。对象映射是一种编程技术,用于在不同数据模型之间转换数据。例如,从数据库记录到业务...

    dozer(PDF)

    Dozer是一款功能强大但使用简单的Java Bean到Java Bean映射工具,能够递归地从一个对象复制数据到另一个对象。通常,这些Java Beans会是不同复杂度的类型。 **1.1 下载** Dozer可以方便地通过其官方网站进行下载。...

    Dozer小试

    "dozer-demo"这个文件名很可能指的是包含一个Dozer使用示例的项目。该项目可能包含了配置文件、源代码和测试用例,用于演示如何在实际项目中应用Dozer。通过这个示例,学习者可以更直观地了解如何在实际开发中集成和...

    dozer的使用实例

    **Dozer库详解与使用实例** Dozer是一个强大的Java Bean到Java Bean映射库,它极大地简化了对象之间的数据转换工作。与Apache的BeanUtils相比,Dozer提供了更高级别的抽象,灵活性更高,并且能够更好地处理复杂的...

    dozer小例子-bean复制

    在这个"dozer小例子-bean复制"中,我们将深入探讨Dozer库的使用方法以及它如何帮助我们高效地完成bean复制。 首先,Dozer的核心功能是提供对象之间的自动映射。在Java中,手动复制bean可能会导致代码冗余且易出错,...

    dozer的eclipse插件

    1. **映射编辑器**: 使用Dozer Eclipse插件,你可以通过图形界面创建和编辑映射规则。只需右键点击项目中的Dozer配置文件(如`dozer.xml`),选择`Open With -&gt; Dozer Mapper Editor`,就可以打开可视化的映射编辑器...

    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-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文档-...

    dozer5.5.1 ( 可集成spring 及 OSGi )

    描述中提到,"dozer5.5.1 ( 可集成spring 及 OSGi ) , 不论在spring及osgi 下均可使用",意味着该版本的Dozer不仅兼容Spring框架,也支持OSGi服务框架。这使得开发者在基于Spring的应用程序或者使用OSGi模块化系统时...

    dozer-user-guide

    Dozer是一个JavaBean的映射工具,用于在Java对象之间转换属性值。它类似于Apache的BeanUtils,但Dozer...对于常见的疑问(FAQ),Dozer的官方文档也提供了解答,以便用户能够更快地上手并解决在使用过程中遇到的问题。

    dozer复杂类型测试类.zip

    《Dozer复杂类型测试类详解》 在Java开发中,数据对象之间的映射是一个常见的需求,比如在服务层与表示层之间,或是不同系统间的数据...在实际开发中,熟练掌握Dozer的使用,能够显著提升项目开发的效率和代码质量。

    javaEE的对象拷贝工具dozer

    2. 定义映射规则:Dozer支持两种方式定义映射规则,一种是使用XML配置文件,另一种是在代码中使用注解。XML配置文件可以集中管理所有映射规则,而注解则更适用于小规模的项目或者特定类的映射。 3. 执行映射:有了...

    dozer5.2 jar包

    **标题与描述解析** 标题中的"dozer5.2 jar包"指的是Dozer库的5.2版本,这是一个Java库,主要用于对象之间的映射。...使用Dozer可以极大地减少手动复制对象属性的工作,使开发者能够专注于业务逻辑的实现。

    dozer-5.3.2-src.zip

    《Dozer:强大的JavaBean映射工具》 在Java开发中,对象间的属性映射是一项常见的任务,尤其是在数据转换和...通过深入学习和使用Dozer,开发者不仅可以掌握一种实用的工具,还能提升自己在对象映射领域的专业技能。

    Dozer详解

    在项目中使用Dozer,首先需要将其依赖添加到构建工具中。对于Maven项目,可以在`pom.xml`文件中添加以下依赖: ```xml &lt;groupId&gt;com.github.dozermapper&lt;/groupId&gt; &lt;artifactId&gt;dozer &lt;version&gt;6.5.2 ``` ###...

    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

    dozer5.3.2

    《Dozer 5.3.2:Java数据映射与校验利器》 在Java开发领域,数据转换和校验是常见的任务,尤其在处理不同系统间的数据交换时。Dozer是一个强大的开源库,专为解决此类问题而设计。本文将深入探讨Dozer 5.3.2版本的...

Global site tag (gtag.js) - Google Analytics