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是一款功能强大但使用简单的Java Bean到Java Bean映射工具,能够递归地从一个对象复制数据到另一个对象。通常,这些Java Beans会是不同复杂度的类型。 **1.1 下载** Dozer可以方便地通过其官方网站进行下载。...
"dozer-demo"这个文件名很可能指的是包含一个Dozer使用示例的项目。该项目可能包含了配置文件、源代码和测试用例,用于演示如何在实际项目中应用Dozer。通过这个示例,学习者可以更直观地了解如何在实际开发中集成和...
**Dozer库详解与使用实例** Dozer是一个强大的Java Bean到Java Bean映射库,它极大地简化了对象之间的数据转换工作。与Apache的BeanUtils相比,Dozer提供了更高级别的抽象,灵活性更高,并且能够更好地处理复杂的...
在这个"dozer小例子-bean复制"中,我们将深入探讨Dozer库的使用方法以及它如何帮助我们高效地完成bean复制。 首先,Dozer的核心功能是提供对象之间的自动映射。在Java中,手动复制bean可能会导致代码冗余且易出错,...
1. **映射编辑器**: 使用Dozer Eclipse插件,你可以通过图形界面创建和编辑映射规则。只需右键点击项目中的Dozer配置文件(如`dozer.xml`),选择`Open With -> Dozer Mapper Editor`,就可以打开可视化的映射编辑器...
赠送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文档-...
赠送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 ) , 不论在spring及osgi 下均可使用",意味着该版本的Dozer不仅兼容Spring框架,也支持OSGi服务框架。这使得开发者在基于Spring的应用程序或者使用OSGi模块化系统时...
Dozer是一个JavaBean的映射工具,用于在Java对象之间转换属性值。它类似于Apache的BeanUtils,但Dozer...对于常见的疑问(FAQ),Dozer的官方文档也提供了解答,以便用户能够更快地上手并解决在使用过程中遇到的问题。
《Dozer复杂类型测试类详解》 在Java开发中,数据对象之间的映射是一个常见的需求,比如在服务层与表示层之间,或是不同系统间的数据...在实际开发中,熟练掌握Dozer的使用,能够显著提升项目开发的效率和代码质量。
2. 定义映射规则:Dozer支持两种方式定义映射规则,一种是使用XML配置文件,另一种是在代码中使用注解。XML配置文件可以集中管理所有映射规则,而注解则更适用于小规模的项目或者特定类的映射。 3. 执行映射:有了...
**标题与描述解析** 标题中的"dozer5.2 jar包"指的是Dozer库的5.2版本,这是一个Java库,主要用于对象之间的映射。...使用Dozer可以极大地减少手动复制对象属性的工作,使开发者能够专注于业务逻辑的实现。
《Dozer:强大的JavaBean映射工具》 在Java开发中,对象间的属性映射是一项常见的任务,尤其是在数据转换和...通过深入学习和使用Dozer,开发者不仅可以掌握一种实用的工具,还能提升自己在对象映射领域的专业技能。
在项目中使用Dozer,首先需要将其依赖添加到构建工具中。对于Maven项目,可以在`pom.xml`文件中添加以下依赖: ```xml <groupId>com.github.dozermapper</groupId> <artifactId>dozer <version>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.3.2:Java数据映射与校验利器》 在Java开发领域,数据转换和校验是常见的任务,尤其在处理不同系统间的数据交换时。Dozer是一个强大的开源库,专为解决此类问题而设计。本文将深入探讨Dozer 5.3.2版本的...