java对象转换
对象转换: 对象的分层涉及到各个层级之间的对象转换(Entity2DTO , DTO2VO, VO2DTO,DTO2Entity等),传统的采用set/get 方法硬编码实现写的代码比较多;或者采用Bean的copy处理性能受影响
新的处理方式:采用工具在可以在编译器动态生成Java实现类,同时可以集成spring的生态体系,纯粹的是面向接口实现方式
实现方式:
项目中需要添加依赖配置
<org.mapstruct.version>1.3.0.Final</org.mapstruct.version><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>${org.mapstruct.version}</version></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>${org.mapstruct.version}</version></dependency>定义接口类设置映射关系
importcom.sinaif.core.dto.UserDto;importcom.sinaif.core.entity.UserEntity;importorg.mapstruct.Mapper;importorg.mapstruct.Mapping;importorg.mapstruct.Mappings;importjava.util.List;/*** @Author allen_chen* @Description 用户POJO对象转换接口* @Date 2019/7/29 11:53* @Param* @return**/@Mapper(componentModel ="spring")publicinterfaceUserTransfer {/*** @Author allen_chen* @Description eentity转化为dto* @Date 2019/7/29 11:53* @Param [userEntity]* @return com.example.demo.common.base.dto.UserDto**/@Mappings({@Mapping(source ="phone",target ="cellphone"),@Mapping(source ="id",target ="userId")})publicUserDto entity2Dto(UserEntity userEntity);/*** @Author allen_chen* @Description dto转化为entity* @Date 2019/7/29 11:53* @Param [dto]* @return com.example.demo.common.base.entity.UserEntity**/@Mappings({@Mapping(source ="cellphone",target ="phone")})publicUserEntity dto2Entity(UserDto dto);@Mappings({@Mapping(source ="cellphone",target ="phone")})publicList<UserEntity> listDto2ListEntity(List<UserDto> dtoList);@Mappings({@Mapping(source ="phone",target ="cellphone")})publicList<UserDto> ListEntity2ListDto( List<UserEntity> entityList);}具体调用方式直接通过spring注入完成调用
@AutowiredUserTransfer userTransfer;@TestpublicvoidtestUserEntity2DtoTransfer(){UserEntity entity =newUserEntity();entity.setName("allen");entity.setNickName("allen.chen");entity.setCreTime(newDate());entity.setId(50L);entity.setPhone("135060309");UserDto dto = userTransfer.entity2Dto(entity);Assert.assertNotNull(dto);Assert.assertEquals("allen",dto.getName());}@TestpublicvoidtestUserDto2EntityTransfer(){UserDto dto =newUserDto();dto.setName("allen");dto.setNickName("allen.chen");UserEntity entity = userTransfer.dto2Entity(dto);Assert.assertNotNull(entity);Assert.assertEquals("allen",entity.getName());}- 注意事项:
1) 如果项目中有用到swagger的需要排除下依赖:
<exclusions> <exclusion> <artifactId>mapstruct</artifactId> <groupId>org.mapstruct</groupId> </exclusion></exclusions> |
2)更多使用eclipse IDEA 工具需要参考官网地址:http://mapstruct.org/documentation/ide-support/
java对象转换的更多相关文章
- Java对象转换成xml对象和Java对象转换成JSON对象
1.把Java对象转换成JSON对象 apache提供的json-lib小工具,它可以方便的使用Java语言来创建JSON字符串.也可以把JavaBean转换成JSON字符串. json-lib的核心 ...
- JAVA对象转换JSON
1. 把java 对象列表转换为json对象数组,并转为字符串 复制代码 代码如下: JSONArray array = JSONArray.fromObject(userlist); String ...
- FastJson、Jackson、Gson进行Java对象转换Json细节处理
前言 Java对象在转json的时候,如果对象里面有属性值为null的话,那么在json序列化的时候要不要序列出来呢?对比以下json转换方式 一.fastJson 1.fastJson在转换java ...
- FastJson、Jackson、Gson进行Java对象转换Json的细节处理
前言 Java对象在转json的时候,如果对象里面有属性值为null的话,那么在json序列化的时候要不要序列出来呢?对比以下json转换方式 一.fastJson 1.fastJson在转换java ...
- 总结学习! xml与java对象转换 --- JDK自带的JAXB(Java Architecture for XML Binding)
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例文档反向 ...
- jackson 进行json与java对象转换 之三
2.测试类,没用Junit,用Main()方法输出. package test; import java.io.IOException; import java.util.ArrayList; imp ...
- jxcel - 好用的Excel与Java对象转换工具
更多精彩博文,欢迎访问我的个人博客 Jxcel简介 Jxcel是一个支持Java对象与Excel(目前仅xlsx.xls)互相转换的工具包. 项目地址:https://github.com/jptan ...
- xml-mapping xml 与 java 对象转换映射框架,像 XStream 一样优雅地读写xml
xml xml 是 java 实现的 xml 框架. 希望以最优雅的方式进行 xml 和 java 之间的转换处理,一行代码搞定一切. 特点 对象的和 xml 的互相映射 支持注解 @Alias 指定 ...
- Java对象转换Json的细节处理
一.fastJson 1.fastJson在转换java对象为json的时候,默认是不序列化null值对应的key的 也就是说当对象里面的属性为空的时候,在转换成json时,不序列化那些为null值的 ...
随机推荐
- [转帖]鲁大师Q3季度PC内存排行:DDR3彻底淘汰 DDR5要来了
鲁大师Q3季度PC内存排行:DDR3彻底淘汰 DDR5要来了 https://www.cnbeta.com/articles/tech/902347.htm 10月23日消息,今天鲁大师公布Q3季度P ...
- [转帖]MySQL语句大全
MySQL语句大全 https://www.cnblogs.com/jicki/p/5548676.html 一.连接mysql. 格式: mysql -h主机地址 -u用户名 -p用户密码 二.修改 ...
- Linux7 安装python3.5.4
1.首先修改yum配置文件 因为yum使用python2,因此替换为python3后可能无法正常工作,继续使用这个python2.7.5 因此修改yum配置文件(vi /usr/bin/yum). 把 ...
- 下载安装Git,学习笔记
官方地址为:https://git-scm.com/download/win 2.下载完之后,双击安装,全部选择默认. 3.选择安装目录 4.选择组件 5.开始菜单目录名设置 6.选择使用命令行环境 ...
- 最小轻量级的Istio来了,仅使用流量治理能力
Istio 1.0.1作为8月份的版本已经发布,主要修复了1.0版本发布以来发现的一些关键Issue.官网的release note(https://istio.io/about/notes/1.0. ...
- 邮件标准协议:MIME(Multipurpose Internet Mail Extensions)
MIME(多用途互联网邮件扩展)指的是一系列电子邮件技术规范 ,主要包括 RFC 2045~2049 传统的电子邮件只能使用 ASCII 字符,导致非英文字符都不能在电子邮件中使用 而且电子邮件中 ...
- winfrom 集成krpano 项目 添加折线
C#.NET WinFrom开发之嵌入Google浏览器 (CefSharp) 引入静态页面 CefWebBrowser = new ChromiumWebBrowser("http://& ...
- ABP 基于DDD的.NET开发框架 学习(三)创建模块:任务管理
1.图标i获取:https://material.io/icons/查看2.js中创建如var _tenantService = abp.services.app.tenant;需清除页面的缓存,按c ...
- VBA循环(十一)
当需要多次执行一段代码时,就可以使用循环语句. 一般来说,语句是按顺序执行的:函数中的第一个语句首先执行,然后是第二个,依此类推. 编程语言提供了各种控制结构,允许更复杂的执行路径. 循环语句允许多次 ...
- 在浏览器输入URL回车后发生了什么?
本文由 简悦 SimpRead 转码, 原文地址 https://4ark.me/post/b6c7c0a2.html 这个问题已经是老生常谈了,更是经常被作为面试的压轴题出现,网上也有很多文章,但最 ...