java dozer_java Dozer深copy工具类
前言
之前数据对象转换用 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工具类相关推荐
- java inputtools_Java后台开发常用工具类
本文涉及的工具类部分是自己编写,另一部分是在项目里收集的.工具类涉及数据库连接.格式转换.文件操作.发送邮件等等.提高开发效率,欢迎收藏与转载. 数据库连接工具类 数据库连接工具类--仅仅获得连接对象 ...
- (转)JAVA 十六个常用工具类
(转)JAVA 十六个常用工具类 一. org.apache.commons.io.IOUtils closeQuietly 关闭一个IO流.socket.或者selector且不抛出异常.通常放在f ...
- java 项目中常用的工具类总结
1.文件 1.根据图片的链接,下载图片 package com.lingxu.module.BigDataJoinMessage.util;import java.io.FileOutputStrea ...
- 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 ...
- java中定义一个CloneUtil 工具类
其实所有的java对象都可以具备克隆能力,只是因为在基础类Object中被设定成了一个保留方法(protected),要想真正拥有克隆的能力, 就需要实现Cloneable接口,重写clone方法.通 ...
- 【java笔记】Collections集合工具类
java.utils.Collections是集合工具类,用来对集合进行操作 常用方法: public static<T>boolean addAll(Collection<T> ...
- JAVA实现 PDF转换 常用工具类(html转PDF、PDF添加页码、PDF文件下载、PDF添加印章或者水印)
JAVA实现 PDF转换 常用工具类(html转PDF.PDF添加页码.PDF文件下载.PDF添加印章或者水印)可直接使用 package com.bestvike.util; import com. ...
- Java(35):Java Base64编码和解码工具类
Java Base64编码和解码工具类 Base64Util工具类: package com.ciphergateway.utils; import java.io.UnsupportedEncodi ...
- JAVA 文件上传下载工具类
JAVA 文件上传下载工具类 import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org. ...
最新文章
- [译] ⚛ React 状态管理工具博物馆
- 工作分解结构图(Work Breakdown Structure)
- 思必驰携手博泰,共创智能汽车新声代
- Disruptor并发框架-1
- DevOps组织如何选取拓扑结构以提升协作效能
- 浅析Linux设备树dts相关知识
- ali 媒体转码签名生成-php
- 163接收邮件服务器pop3,pop3设置(163邮箱imap pop3设置)
- tomcat6到tomcat9解压版(64位)随意下载
- Cat8 八类网线是什么?与Cat5、Cat6、Cat7网线的区别?
- 向日葵显示不能连接服务器,手机向日葵远程连接服务器
- html表格的冻结列
- android fragmentmanager 界面报错,FragmentManager is already executing transactions异常
- 从源代码编译和安装gluster
- StrangIOC框架一
- Android自定义控件之拓展TextView(ExpandTextView)
- GitHub 项目徽章的添加和设置
- 算法的时间复杂度、空间复杂度、稳定性
- 关于 Alpha is Transparency 到底需不需要勾的最终结论
- 年月日软件测试用例的设计,实验三日期题白盒测试用例设计.doc