java之mapstruct的应用】的更多相关文章

一.MapStruct是一个代码生成器,简化了不同的Java Bean之间映射的处理,所以映射指的就是从一个实体变化成一个实体.例如我们在实际开发中,DAO层的实体和一些数据传输对象(DTO),大部分属性都是相同的,只有少部分的不同,通过mapStruct,可以让不同实体之间的转换变的简单.我们只需要按照约定的方式进行配置即可. MapStruct是一个可以处理注解的Java编译器插件,可以在命令行中使用,也可以在IDE中使用.MapStruct有一些默认配置,但是也为用户提供了自己进行配置的途…
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /** * 需求:计算网页访问量前三名 * 用户:喜欢视频 直播 * 帮助企业做经营和决策 * * 看数据 */ object UrlCount { def main(args: Array[String]): Unit = { //1.加载数据 val conf:SparkConf = new Spa…
声明: 1.DO(业务实体对象),DTO(数据传输对象). 2.我的代码中用到了 Lombok ,不了解的可以自行了解一下,了解的忽略这条就好. 在一个成熟的工程中,尤其是现在的分布式系统中,应用与应用之间,还有单独的应用细分模块之后,DO 一般不会让外部依赖,这时候需要在提供对外接口的模块里放 DTO 用于对象传输,也即是 DO 对象对内,DTO对象对外,DTO 可以根据业务需要变更,并不需要映射 DO 的全部属性. 这种 对象与对象之间的互相转换,就需要有一个专门用来解决转换问题的工具,毕竟…
简介 在业务项目的开发中,我们经常需要将 Java 对象进行转换,比如从将外部微服务得到的对象转换为本域的业务对象 domain object,将 domain object 转为数据持久层的 data object,将 domain object 转换为 DTO 以便返回给外部调用方等.在转换时大部分属性都是相同的,只有少部分的不同,如果手工编写转换代码,会很繁琐.这时我们可以通过一些对象转换框架来更方便的做这件事情. 这样的对象转换框架有不少,比较有名的有 ModelMapper 和 Map…
官网地址:http://mapstruct.org/ MapStruct 是一个代码生成器,简化了不同的 Java Bean 之间映射的处理,所谓的映射指的就是从一个实体变化成一个实体.例如我们在实际开发中,DAO 层的实体(PO)和一些数据传输对象(DTO),大部分属性都是相同的,只有少部分的不同,通过 mapStruct,可以让不同实体之间的转换变的简单.我们只需要按照约定的方式进行配置即可. MapStruct 是一个可以处理注解的 Java 编译器插件,可以在命令行中使用,也可以在 ID…
摘要 当前web后端开发,都是使用多层工程结构,需要在VO,BO,DTO,DO等各种数据结构中相互转换.这些转换代码都是些比较简单的字段映射,类型转换,重复性工作比较高,可以使用一些工具解放我们的双手 技术方案 实现类转换的方案很多,不同方案有优缺点,需要开发者自行取舍 方案 优点 缺点 手写代码 1. 灵活性高 2.方便后续重构 1. 重复性工作多 2. 手写代码容易遗漏掉有些字段 BeanUtils.copyProperties 使用反射实现 1. 使用简单 2. Apache 的包效率比较…
一.什么是MapStruct? MapStruct是用于代码中JavaBean对象之间的转换,例如DO转换为DTO,DTO转换为VO,或Entity转换为VO等场景,虽然Spring库和 Apache 的库提供了类似BeanUtils用于转换对象,但是性能不佳(需要判断类是否被加载,如果没加载,还要加载类.因此反射性能低), 并且要类型和名称一样才能进行映射,因此可以推荐使用MapStruct,不仅可以快速实现JavaBean之间的转换,且能实现List之间的转换, 而且性能不错: 二.使用Ma…
1.序 通常在后端开发中经常不直接返回实体Entity类,经过处理转换返回前端,前端提交过来的对象也需要经过转换Entity实体才做存储:通常使用的BeanUtils.copyProperties方法也比较粗暴,不仅效率低下(使用反射)而且仅映射相同名的属性,多数情况下还需要手动编写对应的转换方法实现. 插件MapStruct以接口方法结合注解优雅实现对象转换,MapStruct生成器生成代码以更贴近原生的Setter.Getter方法处理属性映射更为高效. https://github.com…
项目开发中,业务分层会涉及不同类型的Bean之间需要相互转换,如PO与DTO之间,PO与VO之间等.手动编码setter/getter各个对应属性,会显得臃肿繁琐.通过Mapstruct框架可简单方便地完成这一工作. 如何引入: IntelliJ IDEA中安装MapStruct Support插件:File -> Settings -> Plugins  搜索 MapStruct support 安装,同时File -> Settings -> Compiler -> An…
Awesome系列的Java资源整理.awesome-java 就是akullpp发起维护的Java资源列表,内容包括:构建工具.数据库.框架.模板.安全.代码分析.日志.第三方库.书籍.Java 站点等等. 经典的工具与库 (Ancients) In existence since the beginning of time and which will continue being used long after the hype has waned. Apache Ant - Build…
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! 在你成为领导者以前,成功只同自己的成长有关.当你成为领导者以后,成功都同别人的成长有关. 1.聊聊并发插入&代码 场景:业务中有些ERP第三方调用该接口,导致多组同样的数据包会调用同一个插入接口.一般都是XXXParamList,一个批量插入的接口. 首先聊聊批量插入的代码,一般都会这样搞,伪代码 for(XXXParam xxx : XXXParamList)validationXXXPar…
最近在阅读swagger源码,当看到 springfox.documentation.swagger2.mappers.ModelMapper 类时,无意中看到该类上面使用的 org.mapstruct.Mapper 注解时,对这个注解一时竟想不出个所意然来.便打开百度搜索了一番,有关这个注解的文章不是很多,从这些文章中了解到,这个注解跟JSR 269 有关,下面列出这个注解相关的文章链接.  相关的文章链接: mapstruct官网 http://mapstruct.org/ mapstruc…
MapStruct GitHub 访问地址 : https://github.com/mapstruct/mapstruct/ 使用例子 : https://github.com/mapstruct/mapstruct-examples MapStrcut与其它工具对比以及使用说明! http://www.tuicool.com/articles/uiIRjai 是否一直在使用BeanUtils.copyProperties 用于对象属性拷贝. 出现种种小问题. 会将同名属性拷贝到另外一个对象中…
背景 mapStruct 是一个方便对象转换的工具,类似的工具还有 Dozer, BeanUtils. 实现 mapStruct的核心是在编译期生成基于转换规则的 Impl 文件,运行时直接调用 Impl 文件中的函数.整个 mapStruct 分成三个部分: 自定义注解,指定转换的规则.例如 source, target 等. freemarker 模板,用来生成 impl 文件. 基于 javax.annotation.processing 的处理模块. 基本流程是 #mermaid-155…
一.Object mapping 的技术分类: 运行期 反射调用set/get 或者是直接对成员变量赋值 . 该方式通过invoke执行赋值 *,实现时一般会采用beanutil, Javassist等开源库.这类的代表:Dozer,ModelMaper 编译期 动态生成set/get代码的class文件 ,在运行时直接调用该class文件.* 该方式实际上扔会存在set/get代码,只是不需要自己写了. 这类的代表:MapStruct,Selma,Orika ### 主要框架性能对比: 每秒钟…
第一次看到 MapStruct 的时候, 我个人非常的开心. 因为其跟我内心里面的想法不谋而合. 1 MapStruct 是什么? 1.1 JavaBean 的困扰 对于代码中 JavaBean之间的转换, 一直是困扰我很久的事情. 在开发的时候我看到业务代码之间有很多的 JavaBean 之间的相互转化, 非常的影响观感, 却又不得不存在. 我后来想的一个办法就是通过反射, 或者自己写很多的转换器. 第一种通过反射的方法确实比较方便, 但是现在无论是 BeanUtils, BeanCopier…
Awesome Java 这是Github上关于Java相关的工具,框架等等资源集合. 原文参考: https://github.com/akullpp/awesome-java. @pdai 最全的Java后端知识体系 https://www.pdai.tech, 每天更新中.... Awesome Java Bean Mapping Build Bytecode Manipulation Caching CLI Cluster Management Code Analysis Code Co…
加入lombok解决 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <includeSystemScope>true</includeSystemScope> &…
目录 深拷贝 1. 手动new 2. clone方法 3. java自带序列化 4. json序列化 性能测试 深拷贝总结 浅拷贝 1. spring BeanUtils(Apache BeanUtils) 2. mapstruct 性能测试 浅拷贝总结 在java开发的过程中我们很多时候会有深拷贝需求,比如将一个请求体拷贝多次,修改成多个不同版笨,分别发给不同的服务,在比如维护不同的缓存时.还有些时候并不需要深拷贝,只是简单的类型转换,比如到将do对象转换为dto对象返回给前端,其中两者的字段…
文章:@Mapper注解的使用 地址:https://blog.csdn.net/weixin_39666581/article/details/81057385 @Mapper注解的的作用 1:为了把mapper这个DAO交給Spring管理 http://412887952-qq-com.iteye.com/blog/2392672 2:为了不再写mapper映射文件 https://blog.csdn.net/phenomenonstell/article/details/79033144…
对象转换: 对象的分层涉及到各个层级之间的对象转换(Entity2DTO , DTO2VO, VO2DTO,DTO2Entity等),传统的采用set/get 方法硬编码实现写的代码比较多:或者采用Bean的copy处理性能受影响 新的处理方式:采用工具在可以在编译器动态生成Java实现类,同时可以集成spring的生态体系,纯粹的是面向接口实现方式 实现方式: 项目中需要添加依赖配置 <org.mapstruct.version>1.3.0.Final</org.mapstruct.v…
第三节MapStruct--Defining a mapper 在这一章节你将学到如何用mapstruct和它的一些必要的操作选项来定义一个bean mapper. 3.1 Basic mappings 创建一个java接口类,使用必要的方法和注解来创建一个简单的mapper,其中要用到org.mapstruct.Mapper包的注解: 例6: @Mapper public interface CarMapper { @Mappings({ @Mapping(source = "make&quo…
我们都知道,随着一个工程的越来越成熟,模块划分会越来越细,其中实体类一般存于 domain 之中,但 domain 工程最好不要被其他工程依赖,所以其他工程想获取实体类数据时就需要在各自工程写 model,自定义 model 可以根据自身业务需要映射相应的实体属性.这样一来,这个映射工程貌似并不简单了.阿森差点就犯难了-- 序 所以阿淼今天就要给大家安利一款叫 mapstruct 的插件,它就是专门用来处理 domin 实体类与 model 类的属性映射的,我们只需定义 mapper 接口,ma…
我们之前说到项目中会用到各种object,vo,bo,dto等等.我们需要在不同的对象上复制属性. 一.BeanUtils和PropertyUtils 我们最常用的就是Common包里面的BeanUtils,或者Spring里面的BeanUtils. BeanUtils.copyProperties(dest, orig); 还有一个PropertyUtils PropertyUtils.copyProperties(dest, orig); 它俩区别: BeanUtils和PropertyUt…
本文参考 https://blog.csdn.net/u012373815/article/details/88367456 主要是为了自己使用方便查询. 这些都是我平时用到了,大家有什么好方法或者有什么更多知识,希望大家不吝赐教 开发中,我们经常需要将PO转DTO.DTO转PO等一些实体间的转换.比较出名的有BeanUtil 和ModelMapper等,它们使用简单,但是在稍显复杂的业务场景下力不从心.MapStruct这个插件可以用来处理domin实体类与model类的属性映射,可配置性强.…
在前几天的文章<为什么阿里巴巴禁止使用Apache Beanutils进行属性的copy?>中,我曾经对几款属性拷贝的工具类进行了对比. 然后在评论区有些读者反馈说MapStruct才是真的香,于是我就抽时间了解了一下MapStruct.结果我发现,这真的是一个神仙框架,炒鸡香. 这一篇文章就来简单介绍下MapStruct的用法,并且再和其他几个工具类进行一下对比. 为什么需要MapStruct ? 首先,我们先说一下MapStruct这类框架适用于什么样的场景,为什么市面上会有这么多的类似的…
mapstruct 快速使用 mapstruct 主要的作用则是用来复制对象字段使用,功能非常的强大.在没有使用 mapstruct 之前可能都在使用 BeanUtils ,但是 BeanUtils 其实问题比较多,只能处理同类型的字段并且同名称的字段,对于复杂的情况没有办法处理,其实就是 BeanUtils 使用的反射,性能较差.而 mapstruct 使用的是传统的 setter 与 getter 方式,只需要提供接口在编译的时候会生成相应的实现. 1. 添加依赖 <dependency>…
前言 MVC模式是目前主流项目的标准开发模式,这种模式下框架的分层结构清晰,主要分为Controller,Service,Dao.分层的结构下,各层之间的数据传输要求就会存在差异,我们不能用一个对象来贯穿3层,这样不符合开发规范且不够灵活. 我们常常会遇到层级之间字段格式需求不一致的情况,例如数据库中某个字段是datetime日期格式,这个时间戳在数据库中的存储值为2020-11-06 23:59:59.999999,但是传递给前端的时候要求接口返回yyyy-MM-dd的格式,或者有些数据在数据…
jhipster,中文释义: Java 热爱者! JHipster is a development platform to quickly generate, develop, & deploy modern web applications & microservice architectures. JHipster 可以通过代码生成,让你快速开发web应用和微服务. 安装 安装Java,Git Node.js 安装 JHipster npm install -g generator-…
常用开发库 - MapStruct工具库详解 MapStruct是一款非常实用Java工具,主要用于解决对象之间的拷贝问题,比如PO/DTO/VO/QueryParam之间的转换问题.区别于BeanUtils这种通过反射,它通过编译器编译生成常规方法,将可以很大程度上提升效率.@pdai 为什么会引入MapStruct这类工具 首先看下这类工具出现的背景.@pdai JavaBean 问题引入 在开发的时候经常会有业务代码之间有很多的 JavaBean 之间的相互转化,比如PO/DTO/VO/Q…