Dozer是Java Bean到Java Bean映射器,它以递归方式将数据从一个对象复制到另一个对象。通常,这些Java Bean将具有不同的复杂类型。

Dozer支持简单属性映射,复杂类型映射,双向映射,隐式显式映射以及递归映射。这包括映射还需要在元素级别进行映射的集合属性。

1、导入依赖

<dependency><groupId>net.sf.dozer</groupId><artifactId>dozer-spring</artifactId><version>5.5.1</version>
</dependency><dependency><groupId>net.sf.dozer</groupId><artifactId>dozer</artifactId><version>5.5.1</version>
</dependency>

2、添加配置

@Configuration
public class DozerMapperConfig {@Beanpublic DozerBeanMapperFactoryBean dozerBeanMapperFactoryBean(@Value("classpath*:dozer/*.xml" ) Resource[] resources) throws Exception {final DozerBeanMapperFactoryBean dozerBeanMapperFactoryBean = new DozerBeanMapperFactoryBean();dozerBeanMapperFactoryBean.setMappingFiles(resources);return dozerBeanMapperFactoryBean;}
}

3、在resources下的dozer目录创建xml

bean-mappings.xml

<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://dozer.sourceforge.nethttp://dozer.sourceforge.net/schema/beanmapping.xsd">
</mappings>

global-configuration.xml

<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://dozer.sourceforge.nethttp://dozer.sourceforge.net/schema/beanmapping.xsd"><configuration><date-format>yyyy-MM-dd HH:mm:ss</date-format><wildcard>true</wildcard><trim-strings>false</trim-strings></configuration>
</mappings>

4、工具类

接口

public interface IGenerator {/*** @param s   数据对象* @param clz 复制目标类型* @return {@link T}* @Description: 单个对象的深度复制及类型转换,vo/domain , po*/<T, S> T convert(S s, Class<T> clz);/*** @param s   数据对象* @param clz 复制目标类型* @return {@link List<T>}* @Description: list深度复制*/<T, S> List<T> convert(List<S> s, Class<T> clz);/*** @param s   数据对象* @param clz 复制目标类型* @return {@link Set<T>}* @Description: set深度复制*/<T, S> Set<T> convert(Set<S> s, Class<T> clz);/*** @param s   数据对象* @param clz 复制目标类型* @return {@link T[]}* @Description: 数组深度复制*/<T, S> T[] convert(S[] s, Class<T> clz);
}

实现

@Component
public class EJBGenerator implements IGenerator {@Autowiredprotected Mapper dozerMapper;@Overridepublic <T, S> T convert(final S s, Class<T> clz) {return s == null ? null : this.dozerMapper.map(s, clz);}@Overridepublic <T, S> List<T> convert(List<S> s, Class<T> clz) {return s == null ? null : s.stream().map(vs -> this.dozerMapper.map(vs, clz)).collect(Collectors.toList());}@Overridepublic <T, S> Set<T> convert(Set<S> s, Class<T> clz) {return s == null ? null : s.stream().map(vs -> this.dozerMapper.map(vs, clz)).collect(Collectors.toSet());}@Overridepublic <T, S> T[] convert(S[] s, Class<T> clz) {if (s == null) {return null;}@SuppressWarnings("unchecked")T[] arr = (T[]) Array.newInstance(clz, s.length);for (int i = 0; i < s.length; i++) {arr[i] = this.dozerMapper.map(s[i], clz);}return arr;}
}

5、调用示例

@Autowired
private IGenerator generator;public UserOutputDTO getUserByName (User user) {UserOutputDTO outputDto = generator.convert(user, UserOutputDTO.class);return outputDto;
}

SpringBoot使用dozer相关推荐

  1. SpringBoot 整合 Dozer 映射框架

    SpringBoot 整合 Dozer 映射框架 1. Dozer 介绍 2. 为什么要使用映射框架 Dozer 3. Dozer 映射框架的使用 1. Dozer 介绍 Dozer 是一个 Java ...

  2. SpringBoot集成Dozer

    一.什么是Dozer? Dozer是一种Java Bean到Java Bean的映射器,递归地将数据从一个对象复制到另一个对象,它是一个强大的,通用的,灵活的,可重用的和可配置的开源映射框架. 说白点 ...

  3. SpringBoot Dozer

    文章目录 Dozer springboot 配置 Dozer 演示 Dozer工具接口和实现类 全面测试 项目实战演示 Dozer Dozer是什么? Dozer是一个JavaBean映射工具库. 它 ...

  4. SpringBoot学习小结之Dozer

    前言 Dozer是一个Java Bean到Java Bean的Mapper,可将数据从一个对象递归复制到另一个对象.Dozer支持简单属性.复杂属性映射,Java中常见集合相互映射和递归映射. Doz ...

  5. Dozer的使用(整合springboot)

    dozer是实体类与实体类之间转换的工具,下面是简单操作配置 引入依赖: <!--dozer 实体类转换工具--><dependency><groupId>net. ...

  6. springboot 技术图谱_java后台(Springboot)开发知识图谱高频技术汇总-学习路线...

    [原创]java后台(Springboot)开发知识图谱&&高频技术汇总 1.引言: 学习一个新的技术时,其实不在于跟着某个教程敲出了几行.几百行代码,这样你最多只能知其然而不知其所以 ...

  7. dozer无法映射java8中的LocalDateTime类型的解决方案

    dozer是一个很方便的bean映射工具包,可以很轻松地做到两个bean对象的属性值复制,但是dozer包在2014年的时候停止更新了,而jdk1.8也是2014年发布的,所以对于java8中的新日期 ...

  8. BootDo架构-基于 Springboot 和 Mybatis 的后台管理系统

    BootDo 面向学习型的开源框架 平台简介 BootDo是高效率,低封装,面向学习型,面向微服的开源Java EE开发框架. BootDo是在SpringBoot基础上搭建的一个Java基础开发平台 ...

  9. 基于 Springboot 和 Mybatis 的后台管理系统 BootDo | 软件推介

    面向学习型的开源框架,简洁高效,减少过渡封装,展现技术本质 授权协议:GPL 开发语言:Java 操作系统:跨平台 软件作者:lcg0124 项目介绍 面向学习型的开源框架,简洁高效,减少过渡封装,展 ...

最新文章

  1. “数学不行,干啥也不行!”骨灰级程序员:其实你们都是瞎努力
  2. 爬虫框架webmagic与spring boot的结合使用--转
  3. 内部类调用相同属性同名时的调用细节
  4. VTK:vtkCaptionWidget用法实战
  5. 1057 数零壹 (20 分)
  6. Windows下Nginx的启动、停止等基本命令
  7. Hibernate-HQL基础
  8. 关于java.lang.ClassNotFoundException: org.git.mm.mysql.Driver的解决办法
  9. 技术实践丨手把手教你使用MQTT方式对接华为IoT平台
  10. maven项目部署到Repository(Nexus)
  11. pandas知识点(汇总和计算描述统计)
  12. React Native Modal组件 Android覆盖状态栏
  13. 谷歌浏览器:解决Chrome加载扩展程序提示程序包无效:
  14. 编程的未来 Java, C, Go, Swift, Dart? Uncle Bob Martin - The Future of Programming
  15. SAP ABAP STANDARD TABLE,SORTED TABLE和HASHED TABLE简介
  16. 实现Promise的resolve/reject/then/all/race/finally/catch方法
  17. linux中dd命令写入数据,Linux中dd命令的用法
  18. 二十六、多线程练习题
  19. 80后发财靠康波:周金涛生前20篇雄文精华,一文尽览
  20. 排序算法(5) -- 快速排序

热门文章

  1. 自来水厂自动化控制系统
  2. ug建模减速器_UG做一级减速器设计方法,毕业设计不用愁啦!
  3. mongodb不等于某个值_mongodb查询的语法(大于,小于,大于或等于,小于或等于等等)...
  4. 最新WIN10系统封装教程2019系列(八)——测试效果
  5. 4. 中学生学习心理
  6. 怎么把jpg文件转换成pdf文件
  7. 小程序容器解决OA系统数字化升级难题?
  8. 如何开启小米手机5的ROOT权限
  9. 我在公司干了一个月,办完辞职手续,被告知一个月后来领工资
  10. 惠普服务器如何选择光驱启动不了系统,如何设置光盘启动,小编教你惠普笔记本如何设置光盘启动...