文档章节

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

zgw06629
 zgw06629
发布于 2015/04/29 19:28
字数 349
阅读 7360
收藏 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
海淀
程序员
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
Java内省(Introspector)

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

_-Leon-_
2014/07/14
0
0
Dozer自动给对象赋值,比BeanUtils好用多了

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

王健
2011/12/23
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
【第二章】 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

kernel version does not match DSO version

错误信息: kernel version 384.11 does not match DSO version 384.130.0 原因是: cuda driver版本太低,不匹配DSO 简单有效的修复方法,升级nvidia driver, 步骤如下: 1. google seach ...

刘小米
今天
0
0
maven坐标和依赖

一、maven坐标详解 <groupId>com.fgt.club</groupId><artifactId>club-common-service-facade</artifactId><version>3.0.0</version><packaging>jar</packaging> maven的坐标元素说......

老韭菜
今天
1
0
springmvc-servlet.xml配置表功能解释

问:<?xml version="1.0" encoding="UTF-8" ?> 答: xml version="1.0"表示是此xml文件的版本是1.0 encoding="UTF-8"表示此文件的编码方式是UTF-8 问:<!DOCTYPE beans PUBLIC "-//SPRING//......

隐士族隐逸
今天
1
0
基于TP5的微信的公众号获取登录用户信息

之前讲过微信的公众号自动登录的菜单配置,这次记录一下在TP5项目中获取自动登录的用户信息并存到数据库的操作 基本的流程为:微信设置自动登录的菜单—>访问的URL指定的函数里获取用户信息—...

月夜中徘徊
今天
0
0
youTrack

package jetbrains.teamsys.license.runtime; 计算lis package jetbrains.ring.license.reader; 验证lis 安装后先不要生成lis,要把相关文件进行替换 ring-license-checker-1.0.41.jar char......

max佩恩
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部