前言

之前数据对象转换用 spring 或者 apache的beanUtils.copyProperties(), 这个对象是浅copy的 所以在对象的字段是对象的的情况下会出现引用传递,导致了一些隐性的BUG。

dozer是一种JavaBean的映射工具,类似于apache的BeanUtils。但是dozer更强大(dozer是深copy的),它可以灵活的处理复杂类型之间的映射。不但可以进行简单的属性映射、复杂的类型映射、双向映射、递归映射等,并且可以通过XML配置文件进行灵活的配置。

引入dozer的 mavne配置

net.sf.dozer

dozer

5.0

工具类

package cn.memedai.message.manage.common.util;

import com.google.common.collect.Lists;

import org.dozer.DozerBeanMapper;

import java.util.Collection;

import java.util.List;

/**

* @Description: Dozer beanCopy

* @Author: hongwang.zhang

* @CreateDate: 2019/7/29 17:31

* @Version: 1.0

*/

public class BeanMapperUtils {

/**

* 持有Dozer单例, 避免重复创建DozerMapper消耗资源.

*/

private static DozerBeanMapper dozer = new DozerBeanMapper();

private BeanMapperUtils() {

}

/**

* 基于Dozer转换对象的类型.

*/

public static T map(Object source, Class destinationClass) {

return dozer.map(source, destinationClass);

}

/**

* 基于Dozer转换Collection中对象的类型.

*/

public static List mapList(Collection> sourceList, Class destinationClass) {

List destinationList = Lists.newArrayList();

for (Object sourceObject : sourceList) {

T destinationObject = dozer.map(sourceObject, destinationClass);

destinationList.add(destinationObject);

}

return destinationList;

}

/**

* 基于Dozer将对象A的值拷贝到对象B中.

*/

public static void copy(Object source, Object destinationObject) {

dozer.map(source, destinationObject);

}

}

java dozer_java Dozer深copy工具类相关推荐

  1. java inputtools_Java后台开发常用工具类

    本文涉及的工具类部分是自己编写,另一部分是在项目里收集的.工具类涉及数据库连接.格式转换.文件操作.发送邮件等等.提高开发效率,欢迎收藏与转载. 数据库连接工具类 数据库连接工具类--仅仅获得连接对象 ...

  2. (转)JAVA 十六个常用工具类

    (转)JAVA 十六个常用工具类 一. org.apache.commons.io.IOUtils closeQuietly 关闭一个IO流.socket.或者selector且不抛出异常.通常放在f ...

  3. java 项目中常用的工具类总结

    1.文件 1.根据图片的链接,下载图片 package com.lingxu.module.BigDataJoinMessage.util;import java.io.FileOutputStrea ...

  4. java 兼容excel_Java解析Excel工具类(兼容xls和xlsx)

    依赖jar org.apache.poi poi-ooxml 4.0.1 ExcelUtils.java package javax.utils; import java.io.File; impor ...

  5. java中定义一个CloneUtil 工具类

    其实所有的java对象都可以具备克隆能力,只是因为在基础类Object中被设定成了一个保留方法(protected),要想真正拥有克隆的能力, 就需要实现Cloneable接口,重写clone方法.通 ...

  6. 【java笔记】Collections集合工具类

    java.utils.Collections是集合工具类,用来对集合进行操作 常用方法: public static<T>boolean addAll(Collection<T> ...

  7. JAVA实现 PDF转换 常用工具类(html转PDF、PDF添加页码、PDF文件下载、PDF添加印章或者水印)

    JAVA实现 PDF转换 常用工具类(html转PDF.PDF添加页码.PDF文件下载.PDF添加印章或者水印)可直接使用 package com.bestvike.util; import com. ...

  8. Java(35):Java Base64编码和解码工具类

    Java Base64编码和解码工具类 Base64Util工具类: package com.ciphergateway.utils; import java.io.UnsupportedEncodi ...

  9. JAVA 文件上传下载工具类

    JAVA 文件上传下载工具类 import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org. ...

最新文章

  1. [译] ⚛ React 状态管理工具博物馆
  2. 工作分解结构图(Work Breakdown Structure)
  3. 思必驰携手博泰,共创智能汽车新声代
  4. Disruptor并发框架-1
  5. DevOps组织如何选取拓扑结构以提升协作效能
  6. 浅析Linux设备树dts相关知识
  7. ali 媒体转码签名生成-php
  8. 163接收邮件服务器pop3,pop3设置(163邮箱imap pop3设置)
  9. tomcat6到tomcat9解压版(64位)随意下载
  10. Cat8 八类网线是什么?与Cat5、Cat6、Cat7网线的区别?
  11. 向日葵显示不能连接服务器,手机向日葵远程连接服务器
  12. html表格的冻结列
  13. android fragmentmanager 界面报错,FragmentManager is already executing transactions异常
  14. 从源代码编译和安装gluster
  15. StrangIOC框架一
  16. Android自定义控件之拓展TextView(ExpandTextView)
  17. GitHub 项目徽章的添加和设置
  18. 算法的时间复杂度、空间复杂度、稳定性
  19. 关于 Alpha is Transparency 到底需不需要勾的最终结论
  20. 年月日软件测试用例的设计,实验三日期题白盒测试用例设计.doc

热门文章

  1. 酷比魔方i7手写板,Ubuntu 18.04,RTL8723BU wifi驱动安装
  2. 深入浅出内存管理-- 伙伴系统(buddy system)
  3. 我在360硬件大师内存性能排行榜竟然是第一
  4. 图像Gamma变换-增强
  5. 关键词优化难易程度如何判断?
  6. U盘的另类用途(刷bios,dos杀毒,u盘密匙)
  7. 重装Windows,只用53款全免费软件:下 (xbeta译)
  8. Java人员该如何站稳脚跟 需要具备哪些技能
  9. 协程(一)——什么是协程
  10. 2.微信支付分类 和 申请方式 和 支付工具