当前位置: 首页 > web >正文

MapStruct详解

提到属性拷贝,首先想到的BeanUtils。
先简单的回忆下BeanUtils,处理Java Bean之间的属性拷贝;不过由于它是通过反射来拷贝属性,在数据量大一些的时候性能会降低;
且在安全方面也会比较弱;
MapStruct是编译期动态生成getter/setter,在运行期直接调用框架编译好的class类实现实体映射。因此安全性高,编译通过之后,运行期间就不会报错。其次速度快,运行期间直接调用实现类,不会在运行期间使用发射进行转换。

MapStruct的使用
1.引入maven的依赖

 <dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>1.5.3.Final</version></dependency>

创建一个interface接口,定义两个属性进行处理的方法。

@Mapper
public interface StudentMapper {StudentDto toDto(Student student);
}

在代码中,注入StudentMapper,即可引用该方法进行转换。
当然,如果Dto和实体之间的名称不一样,可以通过指向固定的字段映射即可

@Mapping(source ="userName",target="name"

source:指定源对象中的字段名,该字段的值将被映射到目标对象的字段中。
target:指定目标对象中的字段名,该字段将接收源对象字段的值。

当然,如果需要忽略属性,注入ignore = true即可实现;
以上,MapStruct的基本操作基本上都涉及到了

http://www.xdnf.cn/news/20534.html

相关文章:

  • Linux RCU (Read-Copy-Update) 机制深度分析
  • leetcode 912 排序数组(快速排序)
  • 【CV】Opencv图像处理——①几何变换 (1)
  • 神马 M66S+ 282T矿机参数详解:SHA-256算法与Hydro冷却技术
  • 贪心算法应用:食品生产线排序问题详解
  • 继承详解(c++)
  • langchain源码概览
  • Java全栈开发面试实录:从基础到实战的深度解析
  • 【牛客刷题-剑指Offer】BM18 二维数组中的查找:一题四解,从暴力到最优
  • Python元组:不可变但灵活的数据容器
  • LwIP入门实战 — 3 以太网外设 (ETH)
  • 什么是JQ
  • solidity函数篇2
  • Netty从0到1系列之EventLoop
  • 魅族 Note 16 解锁 BL 及 Root 官方刷机包下载Flyme 12.0.1.5A 型号 M521Q
  • 基于SVN搭建企业内部知识库系统实践
  • 试用电子实验记录本ELN的经验之谈
  • 【算法】92.翻转链表Ⅱ--通俗讲解
  • Vue 3项目中引用ECharts并设计多种图表组件的实现方案
  • 行政区划编码树形题解
  • 09_多态
  • `IntersectionObserver`延迟加载不在首屏的自动播放视频/图片/埋点/
  • Boost电路:稳态和小信号分析
  • Linux匿名管道和命名管道以及共享内存
  • C++并发编程指南 递归锁 介绍
  • Kimi K2-0905 256K 上下文 API 状态管理优化教程
  • 2.虚拟内存:分页、分段、页面置换算法
  • 分享一个基于Python+大数据的房地产一手房成交数据关联分析与可视化系统,基于机器学习的深圳房产价格走势分析与预测系统
  • Embedding上限在哪里?- On the Theoretical Limitations of Embedding-Based Retrieval
  • AI产品经理面试宝典第86天:提示词设计核心原则与面试应答策略