mapstruct学习笔记-pojo之间的转换

news2024/11/29 12:43:40

1、前言

mapstruct中常用注解如@Mapping,@AfterMapping,@BeanMapping等的使用,通过案例说明各式各样的业务pojo对象之间如何借助mapstruct完成相互之间的转换,减少代码量的同时也能突出业务逻辑流程,让你的代码里写起来更有规范可言。

2、简介

Reference Guide – MapStruct

3、使用场景

主要用于pojo之间的转换。

不同的convert方案:

4、mapstruct使用 

4.1 不使用mapstruct的缺点

  • 多与杂的代码与业务代码耦合,可读性差
  • 重复的劳动

cardto业务对象:

partdto:

driverdto:

 carvo:

drivervo:

partvo:

测试类:

 

 

 

4.2 mapstuct使用方法

  • 引入依赖
  • 新建抽象类或者接口并标注@mapper注解
  • 写转换方法,方法名任意(eg. dto2vo
  • 获取对象并使用
4.2.1 引入依赖

4.2.2 新建抽象类或者接口并标注@mapper注解

4.2.3 car转化pojo案例

CarConvert抽象类:

测试类:

4.3 默认的映射规则

4.4 @Mappings和@Mapping

需求1:处理成保留2位小数

代码实现:通过@mapping实现

测试类:

需求2:publishDate处理格式

代码:

需求3 vo中的color不从dto中映射:设置ignore

 需求4: 当属性是引用类型时,如何映射?如driverdto

代码:

 结果:

4.5 Aftermapping和mappingtarget

 通过mapstruct处理不了的或者不好处理的场景,我们自己自定义处理。

需求:处理vo中hasPart的值

抽象类增加方法:

结果:

4.5 批量转换

需求:list ---> list

冗余实现:

mapstruct实现:

测试类:

 

4.6 @BeanMapping

 

配置一个id测试:

 

4.7 @InheritConfiguration

4.8 @InheritInverseConfiguration

4.9 与spring结合使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1529836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【GPT概念01】生成式预训练转换器

一、说明 本文对GPT有所描述,主要解释了GPT的重要环节:only解码器。以及这个过程中,原始数据的维度演进、变化过程。对于想知道GPT内结构的朋友能有一定帮助。 二、唯一解码器模型入门 — 因果语言建模 Decoder only Model:唯一解…

Go web 基础相关知识

Go web Web工作方式 浏览器本身是一个客户端,当你输入URL的时候,首先浏览器会去请求DNS服务器,通过DNS获取相应的域名对应的IP,然后通过IP地址找到IP对应的服务器后,要求建立TCP连接,等浏览器发送完HTTP …

QT配置libtorch(一步到位!!!防止踩坑)

QT配置libtorch Qt下载QT配置MSVCQT配置Libtorch Qt下载 Qt点击下载 Qt的安装选择MSVC2017 64-bit(一定要安装,这关乎后面的配置!!!),其他的根据自己的选择进行安装 QT配置MSVC Visual Studio点击安装 这里需要安装VS以…

PwnLab靶场PHP伪协议OSCP推荐代码审计命令劫持命令注入

下载链接:PwnLab: init ~ VulnHub 安装: 打开vxbox直接选择导入虚拟电脑即可 正文: 先用nmap扫描靶机ip nmap -sn 192.168.1.1/24 获取到靶机ip后,对靶机的端口进行扫描,并把结果输出到PwnLab文件夹下,命名…

Spark相关

1.Hadoop主要有哪些缺点?相比之下,Spark具有哪些优点? Hadoop主要有哪些缺点:Hadoop虽然已成为大数据技术的事实标准,但其本身还存在诸多缺陷,最主要的缺陷是 MapReduce计算模型延迟过高,无法胜…

Swift中 any some的作用

前言 在学习Swift ui看到一个函数返回了some view。view我可以理解那some是什么? //ContentView.swift struct ContentView_Previews: PreviewProvider{static var previews: some View{ContentView()} }如果你仔细看一些官方文档甚至还有any关键字,也…

GPT实战系列-智谱GLM-4的模型调用

GPT实战系列-智谱GLM-4的模型调用 GPT专栏文章: GPT实战系列-实战Qwen通义千问在Cuda 1224G部署方案_通义千问 ptuning-CSDN博客 GPT实战系列-ChatGLM3本地部署CUDA111080Ti显卡24G实战方案 GPT实战系列-Baichuan2本地化部署实战方案 GPT实战系列-让CodeGeeX2帮…

日本技术,马来西亚制造:NBR SELE COT无硫手指套的革命性性能

在现代工业领域,对于保持生产环境的洁净和高效至关重要。而一种名为NBR SELE COT的无硫手指套正是满足这一需求的理想选择。这款手指套由日本技术开发,采用马来西亚原材料制造,凭借其卓越的性能在工业行业中广受好评。 NBR SELE COT手指套具有…

云平台一键迁移(腾讯云windos服务器迁移到阿里云windos服务器)

参考文档 https://help.aliyun.com/zh/smc/use-cases/one-click-cloud-platform-migration 迁移文档 https://cloud.tencent.com/document/product/598/37140 #腾讯密钥创建 https://cloud.tencent.com/document/product/1340/51945 安装腾讯云自动化服务助手 一.导入迁移…

web前端框架设计第二课-Vue.js简介

web前端框架设计第二课-Vue.js简介 一.预习笔记 1.Vue.js概述 Vue.js是一套用于构建用户界面的渐进式框架。本质上是一个用于开发Web前端界面的库,其本身具有响应式编程和组件化的特点。 Vue.js的特性: 轻量级 数据绑定 应用指令 插件化开发 2.V…

Flink中JobManager与TaskManage的运行架构以及原理详解

Flink中JobManager与TaskManage的运行架构详解 整体架构 Flink的运行时架构中,最重要的就是两大组件:作业管理器(JobManger)和任务管理器(TaskManager)。对于一个提交执行的作业,JobManager是真…

云原生:重塑未来应用的基石

随着数字化时代的不断深入,云原生已经成为了IT领域的热门话题。它代表着一种全新的软件开发和部署范式,旨在充分利用云计算的优势,并为企业带来更大的灵活性、可靠性和效率。今天我们就来聊一聊这个热门的话题:云原生~ &#x1f4…

web服务架构

1 Web服务器(如Nginx、Apache等)和Web应用框架(如Flask、Django等) Web服务器(如Nginx、Apache等)和Web应用框架(如Flask、Django等)在Web应用开发和部署中扮演着不同的角色&#xf…

飞天使-k8s知识点26-kubernetes温故知新1-pod

文章目录 创建一个podpod的启动命令和参数更改pod 镜像拉取策略 pod 的三种探针pod 探针的实现方式prestop 和 prestart 创建一个pod apiVersion: v1 # 必选,API 的版本号 kind: Pod # 必选,类型 Pod metadata: # 必选,元数据name: nginx # …

类和对象-3

文章目录 拷贝构造函数运算符重载 拷贝构造函数 拷贝构造函数:只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用。 特点: 拷贝构造函数是构造函数的一个重载形…

K8s-网络原理-上篇

引言 本文是学习《深入剖析K8s》网络原理部分的学习笔记,相关图片和案例可以从https://github.com/WeiXiao-Hyy/k8s_example获取,欢迎Star! 网络基础 IP组成 IP地址由两部分组成,即网络地址和主机地址。网络地址表示其属于互联…

GB28181视频汇聚EasyCVR平台接入海康Ehome设备,设备在线但是视频无法播放是什么原因?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

vivado 物理优化约束、交互式物理优化

物理优化约束 Vivado Design Suite在物理优化过程中尊重DONT_TOUCH特性。它不在具有这些属性的网络或小区上执行物理优化。要加快网络选择过程中,具有DONT_TOUCH属性的网络经过预过滤,不被考虑用于物理优化。此外,还遵守Pblock分配&#xff…

MySQL与金蝶云星空对接集成SELECT语句连通销售订单新增(销售订单集成测试)

MySQL与金蝶云星空对接集成SELECT语句连通销售订单新增(销售订单集成测试) ​​ ​​ 数据源系统:MySQL MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方…

Nginx实现原理全解析:构建高效Web服务器的关键

1、Nginx是什么 Nginx(engine X)是一个开源的轻量级的HTTP服务器,能够提供高性能的HTTP和反向代理服务。与传统的Apache服务器相比,在性能上Nginx占用系统资源更小、支持高并发,访问效率更高;在功能上&…