SpringBoot使用dozer
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相关推荐
- SpringBoot 整合 Dozer 映射框架
SpringBoot 整合 Dozer 映射框架 1. Dozer 介绍 2. 为什么要使用映射框架 Dozer 3. Dozer 映射框架的使用 1. Dozer 介绍 Dozer 是一个 Java ...
- SpringBoot集成Dozer
一.什么是Dozer? Dozer是一种Java Bean到Java Bean的映射器,递归地将数据从一个对象复制到另一个对象,它是一个强大的,通用的,灵活的,可重用的和可配置的开源映射框架. 说白点 ...
- SpringBoot Dozer
文章目录 Dozer springboot 配置 Dozer 演示 Dozer工具接口和实现类 全面测试 项目实战演示 Dozer Dozer是什么? Dozer是一个JavaBean映射工具库. 它 ...
- SpringBoot学习小结之Dozer
前言 Dozer是一个Java Bean到Java Bean的Mapper,可将数据从一个对象递归复制到另一个对象.Dozer支持简单属性.复杂属性映射,Java中常见集合相互映射和递归映射. Doz ...
- Dozer的使用(整合springboot)
dozer是实体类与实体类之间转换的工具,下面是简单操作配置 引入依赖: <!--dozer 实体类转换工具--><dependency><groupId>net. ...
- springboot 技术图谱_java后台(Springboot)开发知识图谱高频技术汇总-学习路线...
[原创]java后台(Springboot)开发知识图谱&&高频技术汇总 1.引言: 学习一个新的技术时,其实不在于跟着某个教程敲出了几行.几百行代码,这样你最多只能知其然而不知其所以 ...
- dozer无法映射java8中的LocalDateTime类型的解决方案
dozer是一个很方便的bean映射工具包,可以很轻松地做到两个bean对象的属性值复制,但是dozer包在2014年的时候停止更新了,而jdk1.8也是2014年发布的,所以对于java8中的新日期 ...
- BootDo架构-基于 Springboot 和 Mybatis 的后台管理系统
BootDo 面向学习型的开源框架 平台简介 BootDo是高效率,低封装,面向学习型,面向微服的开源Java EE开发框架. BootDo是在SpringBoot基础上搭建的一个Java基础开发平台 ...
- 基于 Springboot 和 Mybatis 的后台管理系统 BootDo | 软件推介
面向学习型的开源框架,简洁高效,减少过渡封装,展现技术本质 授权协议:GPL 开发语言:Java 操作系统:跨平台 软件作者:lcg0124 项目介绍 面向学习型的开源框架,简洁高效,减少过渡封装,展 ...
最新文章
- “数学不行,干啥也不行!”骨灰级程序员:其实你们都是瞎努力
- 爬虫框架webmagic与spring boot的结合使用--转
- 内部类调用相同属性同名时的调用细节
- VTK:vtkCaptionWidget用法实战
- 1057 数零壹 (20 分)
- Windows下Nginx的启动、停止等基本命令
- Hibernate-HQL基础
- 关于java.lang.ClassNotFoundException: org.git.mm.mysql.Driver的解决办法
- 技术实践丨手把手教你使用MQTT方式对接华为IoT平台
- maven项目部署到Repository(Nexus)
- pandas知识点(汇总和计算描述统计)
- React Native Modal组件 Android覆盖状态栏
- 谷歌浏览器:解决Chrome加载扩展程序提示程序包无效:
- 编程的未来 Java, C, Go, Swift, Dart? Uncle Bob Martin - The Future of Programming
- SAP ABAP STANDARD TABLE,SORTED TABLE和HASHED TABLE简介
- 实现Promise的resolve/reject/then/all/race/finally/catch方法
- linux中dd命令写入数据,Linux中dd命令的用法
- 二十六、多线程练习题
- 80后发财靠康波:周金涛生前20篇雄文精华,一文尽览
- 排序算法(5) -- 快速排序
热门文章
- 自来水厂自动化控制系统
- ug建模减速器_UG做一级减速器设计方法,毕业设计不用愁啦!
- mongodb不等于某个值_mongodb查询的语法(大于,小于,大于或等于,小于或等于等等)...
- 最新WIN10系统封装教程2019系列(八)——测试效果
- 4. 中学生学习心理
- 怎么把jpg文件转换成pdf文件
- 小程序容器解决OA系统数字化升级难题?
- 如何开启小米手机5的ROOT权限
- 我在公司干了一个月,办完辞职手续,被告知一个月后来领工资
- 惠普服务器如何选择光驱启动不了系统,如何设置光盘启动,小编教你惠普笔记本如何设置光盘启动...