文档章节

一个强大易用的java bean之间属性复制框架--Dozer介绍

zgw06629
 zgw06629
发布于 2015/04/29 19:28
字数 349
阅读 7615
收藏 27

Dozer is a Java Bean to Java Bean mapper that recursively copies data from one object to another. Typically, these Java Beans will be of different complex types.

更多内容见:http://dozer.sourceforge.net/documentation/about.html

两个简单示例:

  1. map --> bean
    假设由request得到了页面参数map,想将其转为领域对象–Product。
    Product有如下几个属性:

    private Long id;
    private String name;
    private String description;


    代码:

    // map--> bean
    Map<String,Object> map = Maps.newHashMap();
    map.put("id", 10000L);
    map.put("name", "么么哒");
    map.put("description", "金色外壳");

    DozerBeanMapper mapper = new DozerBeanMapper();
    Product product = mapper.map(map, Product.class);
    assertThat(product.getId()).isEqualTo(10000L);
    assertThat(product.getName()).isEqualTo("么么哒");
    assertThat(product.getDescription()).isEqualTo("金色外壳");

        2. bean --> DTO

       为了解耦的缘故,会为给第三方提供的接口创建独立的dto对象,而不是复用已有的对应数据库表的实体对象(Entity)。故需要在它们两者之间传输数据。

       如现在定义了一个DTO对象,但属性名并不匹配Product对象中的属性名(可能是为了避免冲突或歧义),如下所示:

       private long productId;
       private String productName;
       private String desc;

       这时简单的在相关属性上加一个注解即可,如下所示:

      @Mapping("id")

       private long productId;

       @Mapping("name")

      private String productName;
      @Mapping("description")
      private String desc;

      完整代码示例见:

      Product product = new Product();
      product.setId(10001L);
      product.setName("Hero");
      product.setDescription("黑色外壳");
      DozerBeanMapper mapper = new DozerBeanMapper();
      ProductDTO productDTO = mapper.map(product, ProductDTO.class);
      assertThat(productDTO.getProductId()).isEqualTo(10001L);
      assertThat(productDTO.getProductName()).isEqualTo("Hero");
      assertThat(productDTO.getDesc()).isEqualTo("黑色外壳");


© 著作权归作者所有

共有 人打赏支持
zgw06629
粉丝 16
博文 54
码字总数 30471
作品 0
海淀
程序员
Java内省(Introspector)

Java内省(Introspector) Java内省技术专门用来操作JavaBean的属性。 为什么要学内省? 开发框架时,经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦...

_-Leon-_
2014/07/14
0
0
spring oxm入门(包含demo)

O/X Mapper 是什么? Spring 3.0 的一个新特性是 O/X Mapper。O/X 映射器这个概念并不新鲜,O 代表 Object,X 代表 XML。它的目的是在 Java 对象(几乎总是一个 plain old Java object,或简...

疯狂的兔子
2014/09/09
0
0
Dozer自动给对象赋值,比BeanUtils好用多了

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

王健
2011/12/23
0
0
【第二章】 IoC 之 2.3 IoC的配置使用——跟我学Spring3

2.3.1 XML配置的结构 一般配置文件结构如下: java代码: 查看复制到剪贴板打印 <beans> <import resource=”resource1.xml”/> <bean id=”bean1”class=””></bean> <bean id=”bean2”c......

azikaxu
2015/04/15
0
0
Java SE 6 新特性: JMX 与系统管理

Java SE 6 新特性: JMX 与系统管理 2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马)。跟 Tiger(Java SE 5)相比,Mustang 在性能方面有...

ihaolin
2014/08/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

阿里P8架构师深度概述分布式架构

简介 作为一名架构师,我们要专业,要能看懂代码,及时光着臂膀去机房,也能独挡一面!及时同事搞不定问题,或者撂挑子,你也能给老大一个坚定的眼神:不怕,有我在!还能在会议室上滔滔不绝...

java知识分子
15分钟前
0
0
zabbix利用自带的模板监控mysql数据库

zabbix利用自带的模板监控mysql数据库                                     作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 有些东...

linjin200
21分钟前
0
0
当刷新的Sandbox后,需要重新发布社区

当刷新的Sandbox后,需要重新发布社区 然后在登录页面设置中选择login/forgot password

在山的那边
22分钟前
0
0
Ubuntu 镜像文件下载

https://www.ubuntu.com/download/desktop

15834278076
25分钟前
0
0
解决php -v查看到版本于phpinfo()打印的版本不一致问题

一般造成这种原因可能是升级或多版本 用php -v 和phpinfo()查出来版本不一致,怎么解决呢 编辑/etc/profile文件在最后一行添加一个环境变量: export PATH="/usr/local/php/bin:$PATH" 最后保...

xiaogg
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部