`
lxy19791111
  • 浏览: 480882 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Dozer自动给对象赋值,比BeanUtils好用多了

    博客分类:
  • Java
阅读更多

    在日常的项目中,经常会遇到各层对象之间相互进行值传递的过程,如在数据据持久层有一持久类Entp,它有一个字段为

createDate,为时间类型,相应的在Struts的ActionForm中也有一个字段为createDate,不过应为String类型,这时在二者之

间就会经常碰到将日期型转化为字符串类型以及将字符类型转化为日期类型的情况,利用Dozer可以很方便地为你做到,下面

给出简单示例:

一个XML配置文件:dozerBeanMapping.xml

xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE mappings PUBLIC "-//DOZER//DTD MAPPINGS//EN"   
  3.    "http://dozer.sourceforge.net/dtd/dozerbeanmapping.dtd">  
  4. <mappings>  
  5.   
  6.     <configuration>  
  7.         <stop-on-errors>true</stop-on-errors>  
  8.         <date-format>yyyy-MM-dd</date-format>  
  9.         <wildcard>true</wildcard>  
  10.     </configuration>  
  11.   
  12. </mappings>  

为了方便调用,项目中我自己写的一个工厂类:DozerBeanMapperFactory.java

java 代码
  1. import java.util.ArrayList;   
  2. import java.util.List;   
  3.   
  4. import org.apache.commons.logging.Log;   
  5. import org.apache.commons.logging.LogFactory;   
  6.   
  7. import net.sf.dozer.util.mapping.DozerBeanMapper;   
  8.   
  9. /**  
  10.  * 在Bean间复制数据  
  11.  * 更多信息请访问 http://dozer.sourceforge.net/  
  12.  * @author lixy 2006-9-13 12:13:00  
  13.  *  
  14.  */  
  15. public class DozerBeanMapperFactory {   
  16.        
  17.     private static final Log log = LogFactory.getLog(DozerBeanMapperFactory.class);   
  18.     private static DozerBeanMapper mapp = null;;       
  19.        
  20.     public static DozerBeanMapper getMapper(){   
  21.         if(mapp==null){   
  22.             mapp = new DozerBeanMapper();   
  23.             List mappingFiles = new ArrayList();   
  24.             mappingFiles.add("dozerBeanMapping.xml");   
  25.             mapp.setMappingFiles(mappingFiles);   
  26.             log.debug("Dozer init successfully!");   
  27.         }   
  28.         return mapp;   
  29.     }    
  30. }  

DozerBeanMapper mapper = DozerBeanMapperFactory.getMapper();

mapper.map(gf,point);//将gf => point

在一个Web应用中,我们一般将dozerBeanMapping.xml配置文件放在WEB-INF\classes根目录下。

 当然Dozer的还有很多强大的功能,在此不一一罗列,有兴趣的朋友可以到http://dozer.sourceforge.net/ 得到更多信息。

分享到:
评论
2 楼 lxy19791111 2007-07-03  
jvincent 写道
一般都用BeanUtil...通过反射机制实现的.这个是通过xml...不知道哪个效率更好点...


Dozer比BeanUtil功能更强大且灵活(XML文件可配置),实现机制是相同的,至于效率没有测试过...
1 楼 jvincent 2007-07-03  
一般都用BeanUtil...通过反射机制实现的.这个是通过xml...不知道哪个效率更好点...

相关推荐

    dozer复杂类型测试类.zip

    通过定义映射规则,Dozer可以自动地将源对象的属性值复制到目标对象的相应属性上,而无需手动编写繁琐的赋值代码。例如,如果有一个`User`类和一个`UserProfile`类,它们都有`name`、`email`等相同属性,Dozer就能...

    javaEE的对象拷贝工具dozer

    Dozer的核心功能在于对象之间的自动映射,它能够自动将源对象的属性值映射到目标对象的相应属性上。这在处理复杂的对象结构和减少手动复制代码的工作量方面非常有用。Dozer支持多种类型的映射,包括基本类型、复杂...

    dozer-5.3.2-src.zip

    1. **自动映射**:Dozer可以自动识别源对象和目标对象之间的相似属性,并进行自动映射,极大地减少了手动编写映射代码的工作量。 2. **深度映射**:除了简单的字段映射,Dozer还能处理复杂的对象关系,例如将源对象...

    BeanUtils类库jar包和源码

    在进行属性复制时,如果源对象的某个属性值为空,BeanUtils会自动跳过,避免因为空值引发异常。同时,它还提供了自定义转换器的功能,通过实现Converter接口,可以自定义类型转换规则,处理不同类型间的转换问题。 ...

    dozer5.2 jar包

    1. **自动映射**:Dozer能够自动识别源对象和目标对象之间的相似属性并进行映射,无需编写过多的代码。 2. **双向映射**:不仅可以从源对象到目标对象,还可以反向映射,即从目标对象回溯到源对象。 3. **自定义...

    dozer的使用实例

    Dozer可以自动处理嵌套对象的映射,即一个对象中的对象会被递归地映射到目标对象的相应字段。这对于处理复杂的对象结构非常有用。但是,如果需要排除某些嵌套属性,可以使用`@Exclude`注解。 **双向映射** Dozer...

    BeanUtils工具包

    虽然BeanUtils提供了方便的功能,但在大量属性复制或性能敏感的场景下,可以考虑使用Dozer、ModelMapper等更高级的映射库,它们提供了更丰富的映射规则和更好的性能。 总结,BeanUtils工具包是Java开发中的一个利器...

    dozer小例子-bean复制

    而`commons-lang.jar`是Apache Commons Lang库,提供了很多实用的字符串和对象操作工具,Dozer可能依赖其中的一些功能。 导入依赖后,我们可以通过以下步骤使用Dozer进行bean复制: 1. 创建DozerBeanMapper实例:...

    dozer-user-guide

    它类似于Apache的BeanUtils,但Dozer特别优化了复杂对象的映射,可以将一个对象的字段映射到另一个对象,这在分层架构中尤其有用。在分层架构中,通过封装特定数据对象的变化,而不是将这些对象传播到其他层(例如,...

    dozer 架包!!!!!!!!!!

    但是,Dozer在BeanUtils的基础上进行了扩展,增加了更多高级特性和自定义映射能力,使得在后台数据和前台数据之间的转换更为灵活和高效。 **标签解析:** "前台数据后台数据间的拷贝" —— 这个标签表明Dozer常用于...

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

    Dozer 是一个强大的 Java 对象映射框架,它简化了对象到对象之间的转换工作,尤其在处理复杂的数据结构时。这个工具广泛应用于企业级应用,因为它可以极大地减少手动编写转换代码的工作量。在这个总结中,我们将深入...

    BeanUtils-jar包

    3. `BeanUtils.copyProperties(Object dest, Object orig)`: 这个方法非常实用,它能将源对象(`orig`)的所有可写属性的值复制到目标对象(`dest`)上,前提是这两个对象具有相同的属性。这个功能在对象克隆或数据...

    commons-beanutils所有版本(1.0-1.9.2).zip

    Apache Commons BeanUtils是Java开发中的一个实用工具库,它提供了对JavaBeans属性操作的强大功能,极大地简化了在Java代码中处理对象属性的工作。这个压缩包文件"commons-beanutils所有版本(1.0-1.9.2).zip"包含了...

    dozer的eclipse插件

    **Dozer Eclipse插件**是面向Java开发人员的一款强大工具,尤其在进行对象-对象映射(Object-Object Mapping)时能提供巨大的便利。Dozer是一个开源库,它简化了Java对象之间的数据转换过程,而Dozer Eclipse插件则...

    使用BeanUtils操作属性的一个小坑

    首先,BeanUtils的核心功能是属性的自动映射,这大大简化了对象之间的数据传输。例如,我们可以使用`BeanUtils.copyProperties()`方法快速地将一个JavaBean的属性值复制到另一个JavaBean上。但请注意,这种方法默认...

    Dozer详解

    Dozer可以自动处理列表、数组和其他集合类型的映射。如果源对象和目标对象的集合类型相同,Dozer会将源对象的每个元素映射到目标对象的相应元素。如果类型不同,需要在配置中指定映射关系。 ### 5. 自定义转换器 ...

    dozer(PDF)

    - **递归映射**:当源对象和目标对象具有相同的嵌套结构时,Dozer可以自动处理嵌套层级的映射。 ##### 2.5 配置 Dozer提供了多种配置方式,包括XML配置文件、注解以及API接口等。这些配置方式可以单独使用,也可以...

    java不同对象及集合的多次复制

    - **构造函数**:通过对象的构造函数创建新对象,并将源对象的属性值逐一赋值给新对象,实现浅拷贝。 - **序列化与反序列化**:将对象序列化为字节数组,然后再反序列化为新的对象,实现深拷贝。 3. **注解实现...

    dozer5.5.1 ( 可集成spring 及 OSGi )

    Dozer是一个强大的Java到Java数据映射库,它可以自动映射对象属性,减少了手动编写转换代码的工作量。在Spring框架中,Dozer可以作为Bean之间的映射工具,简化数据绑定和对象转换过程。而OSGi环境下,Dozer的可集成...

Global site tag (gtag.js) - Google Analytics