在日常的项目中,经常会遇到各层对象之间相互进行值传递的过程,如在数据据持久层有一持久类Entp,它有一个字段为
createDate,为时间类型,相应的在Struts的ActionForm中也有一个字段为createDate,不过应为String类型,这时在二者之
间就会经常碰到将日期型转化为字符串类型以及将字符类型转化为日期类型的情况,利用Dozer可以很方便地为你做到,下面
给出简单示例:
一个XML配置文件:dozerBeanMapping.xml
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>true</stop-on-errors>
- <date-format>yyyy-MM-dd</date-format>
- <wildcard>true</wildcard>
- </configuration>
-
- </mappings>
为了方便调用,项目中我自己写的一个工厂类:DozerBeanMapperFactory.java
java 代码
- import java.util.ArrayList;
- import java.util.List;
-
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
-
- import net.sf.dozer.util.mapping.DozerBeanMapper;
-
-
-
-
-
-
-
- public class DozerBeanMapperFactory {
-
- private static final Log log = LogFactory.getLog(DozerBeanMapperFactory.class);
- private static DozerBeanMapper mapp = null;;
-
- public static DozerBeanMapper getMapper(){
- if(mapp==null){
- mapp = new DozerBeanMapper();
- List mappingFiles = new ArrayList();
- mappingFiles.add("dozerBeanMapping.xml");
- mapp.setMappingFiles(mappingFiles);
- log.debug("Dozer init successfully!");
- }
- return mapp;
- }
- }
DozerBeanMapper mapper = DozerBeanMapperFactory.getMapper();
mapper.map(gf,point);//将gf => point
在一个Web应用中,我们一般将dozerBeanMapping.xml配置文件放在WEB-INF\classes根目录下。
当然Dozer的还有很多强大的功能,在此不一一罗列,有兴趣的朋友可以到http://dozer.sourceforge.net/ 得到更多信息。
分享到:
相关推荐
通过定义映射规则,Dozer可以自动地将源对象的属性值复制到目标对象的相应属性上,而无需手动编写繁琐的赋值代码。例如,如果有一个`User`类和一个`UserProfile`类,它们都有`name`、`email`等相同属性,Dozer就能...
Dozer的核心功能在于对象之间的自动映射,它能够自动将源对象的属性值映射到目标对象的相应属性上。这在处理复杂的对象结构和减少手动复制代码的工作量方面非常有用。Dozer支持多种类型的映射,包括基本类型、复杂...
1. **自动映射**:Dozer可以自动识别源对象和目标对象之间的相似属性,并进行自动映射,极大地减少了手动编写映射代码的工作量。 2. **深度映射**:除了简单的字段映射,Dozer还能处理复杂的对象关系,例如将源对象...
在进行属性复制时,如果源对象的某个属性值为空,BeanUtils会自动跳过,避免因为空值引发异常。同时,它还提供了自定义转换器的功能,通过实现Converter接口,可以自定义类型转换规则,处理不同类型间的转换问题。 ...
1. **自动映射**:Dozer能够自动识别源对象和目标对象之间的相似属性并进行映射,无需编写过多的代码。 2. **双向映射**:不仅可以从源对象到目标对象,还可以反向映射,即从目标对象回溯到源对象。 3. **自定义...
Dozer可以自动处理嵌套对象的映射,即一个对象中的对象会被递归地映射到目标对象的相应字段。这对于处理复杂的对象结构非常有用。但是,如果需要排除某些嵌套属性,可以使用`@Exclude`注解。 **双向映射** Dozer...
虽然BeanUtils提供了方便的功能,但在大量属性复制或性能敏感的场景下,可以考虑使用Dozer、ModelMapper等更高级的映射库,它们提供了更丰富的映射规则和更好的性能。 总结,BeanUtils工具包是Java开发中的一个利器...
而`commons-lang.jar`是Apache Commons Lang库,提供了很多实用的字符串和对象操作工具,Dozer可能依赖其中的一些功能。 导入依赖后,我们可以通过以下步骤使用Dozer进行bean复制: 1. 创建DozerBeanMapper实例:...
它类似于Apache的BeanUtils,但Dozer特别优化了复杂对象的映射,可以将一个对象的字段映射到另一个对象,这在分层架构中尤其有用。在分层架构中,通过封装特定数据对象的变化,而不是将这些对象传播到其他层(例如,...
但是,Dozer在BeanUtils的基础上进行了扩展,增加了更多高级特性和自定义映射能力,使得在后台数据和前台数据之间的转换更为灵活和高效。 **标签解析:** "前台数据后台数据间的拷贝" —— 这个标签表明Dozer常用于...
Dozer 是一个强大的 Java 对象映射框架,它简化了对象到对象之间的转换工作,尤其在处理复杂的数据结构时。这个工具广泛应用于企业级应用,因为它可以极大地减少手动编写转换代码的工作量。在这个总结中,我们将深入...
3. `BeanUtils.copyProperties(Object dest, Object orig)`: 这个方法非常实用,它能将源对象(`orig`)的所有可写属性的值复制到目标对象(`dest`)上,前提是这两个对象具有相同的属性。这个功能在对象克隆或数据...
Apache Commons BeanUtils是Java开发中的一个实用工具库,它提供了对JavaBeans属性操作的强大功能,极大地简化了在Java代码中处理对象属性的工作。这个压缩包文件"commons-beanutils所有版本(1.0-1.9.2).zip"包含了...
**Dozer Eclipse插件**是面向Java开发人员的一款强大工具,尤其在进行对象-对象映射(Object-Object Mapping)时能提供巨大的便利。Dozer是一个开源库,它简化了Java对象之间的数据转换过程,而Dozer Eclipse插件则...
首先,BeanUtils的核心功能是属性的自动映射,这大大简化了对象之间的数据传输。例如,我们可以使用`BeanUtils.copyProperties()`方法快速地将一个JavaBean的属性值复制到另一个JavaBean上。但请注意,这种方法默认...
Dozer可以自动处理列表、数组和其他集合类型的映射。如果源对象和目标对象的集合类型相同,Dozer会将源对象的每个元素映射到目标对象的相应元素。如果类型不同,需要在配置中指定映射关系。 ### 5. 自定义转换器 ...
- **递归映射**:当源对象和目标对象具有相同的嵌套结构时,Dozer可以自动处理嵌套层级的映射。 ##### 2.5 配置 Dozer提供了多种配置方式,包括XML配置文件、注解以及API接口等。这些配置方式可以单独使用,也可以...
- **构造函数**:通过对象的构造函数创建新对象,并将源对象的属性值逐一赋值给新对象,实现浅拷贝。 - **序列化与反序列化**:将对象序列化为字节数组,然后再反序列化为新的对象,实现深拷贝。 3. **注解实现...
Dozer是一个强大的Java到Java数据映射库,它可以自动映射对象属性,减少了手动编写转换代码的工作量。在Spring框架中,Dozer可以作为Bean之间的映射工具,简化数据绑定和对象转换过程。而OSGi环境下,Dozer的可集成...