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.pswp.cn/pingmian/95689.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95689.shtml

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

相关文章

8.FC平台模块梳理

文章目录8.FC平台模块梳理8.1. 内存复用技术特点应用价值8.2. 虚拟机启用策略8.3. NUMA8.4. HA高可用8.5. 故障和响应策略8.6. DRS 和 DPM8.7. IMC8.FC平台模块梳理 8.1. 内存复用 内存共享内存交换内存气泡 内存共享&#xff1a;多台虚拟机共享数据内容相同的内存页。内存交换…

贪心算法应用:DNA自组装问题详解

JAVA中的贪心算法应用&#xff1a;DNA自组装问题详解 1. DNA自组装问题概述 DNA自组装(DNA Self-Assembly)是分子计算和纳米技术中的一个重要问题&#xff0c;它利用DNA分子的互补配对特性&#xff0c;通过精心设计DNA序列&#xff0c;使其自发地组装成预定的纳米结构。在计算机…

数据湖如何打造统一存储与处理方案(结构化数据、半结构化数据和非结构化数据)

目录 1. 数据湖的“包容哲学”:为什么需要统一方案? 数据湖的核心诉求 案例:零售企业的痛点 2. 存储层设计:给数据找个舒适的家 分区与分层存储 选择存储格式 案例:Parquet的威力 云存储的选择 3. 元数据管理:给数据湖装上“导航仪” 元数据管理的核心组件 主流…

AUTOSAR进阶图解==>AUTOSAR_SWS_TTCANDriver

TTCAN驱动器详细规范 AUTOSAR TTCAN Driver Specification with Enhanced Visual Documentation目录 1. 概述2. TTCAN控制器状态机3. TTCAN模块架构4. TTCAN时间触发操作序列5. TTCAN错误处理流程6. 总结 1. 概述 TTCAN&#xff08;Time-Triggered CAN&#xff09;驱动器是AU…

equals 定义不一致导致list contains错误

错误代码如下&#xff1a;for (int i0;i< rows.size();i) {Row r rows.get(i);if (r.equals(row)) {assertTrue(rows.contains(row));return;}}cassertTrue(rows.contains(row));返回了false&#xff0c;看起来很奇怪&#xff0c;此时equals 定义如下&#xff1a;public bo…

【Python基础】 20 Rust 与 Python 循环语句完整对比笔记

一、基本循环结构对比 Rust 循环类型 // 1. loop - 无限循环 let mut count 0; loop {count 1;if count > 5 {break;} }// 2. while - 条件循环 let mut number 3; while number ! 0 {println!("{}!", number);number - 1; }// 3. for - 迭代循环 for i in 0..…

Redis 在互联网高并发场景下的应用--个人总结

在现代互联网系统中&#xff0c;高并发已经成为常态。无论是电商的秒杀场景、社交平台的热点推荐&#xff0c;还是支付接口的风控&#xff0c;系统需要同时应对成千上万的请求。这时候&#xff0c;Redis 作为一个高性能的内存数据库&#xff0c;凭借其极快的读写速度和丰富的数…

C++笔记之软件设计原则总结

C++笔记之软件设计原则总结 code review 文章目录 C++笔记之软件设计原则总结 1.软件设计的六大原则 2.高内聚与低耦合 2.1.高内聚(High Cohesion) 2.2.低耦合(Low Coupling) 2.3.高内聚与低耦合的关系与重要性 3.DRY(Dont Repeat Yourself)原则 3.1.定义 3.2.好处 3.3.示…

ThreadLocal 深度解析:原理、应用场景与最佳实践

一、ThreadLocal 核心概念与设计哲学​1.1 ThreadLocal 的基本概念​ThreadLocal 是 Java 中提供线程局部变量的类&#xff0c;它允许每个线程创建自己的变量副本&#xff0c;从而实现线程封闭&#xff08;Thread Confinement&#xff09;。简单来说&#xff0c;ThreadLocal 为…

AMD显卡运行GPT-OSS全攻略

AMD显卡运行GPT-OSS全攻略 本文介绍如何在Windows系统上使用AMD显卡&#xff08;以RX 7900XTX为例&#xff09;运行开源GPT-OSS模型。 前置要求 硬件&#xff1a;AMD显卡&#xff08;如RX 7900XTX&#xff0c;具体支持型号参考ROCm文档&#xff09;。软件&#xff1a; Ollam…

【Sharding-JDBC】​Spring/Spring Boot 集成 Sharding-JDBC,分表策略与 API、YAML 配置实践​

文章目录环境准备Spring框架Sharding-JDBC 4.x版本api实现Sharding-JDBC 5.4.x版本yaml实现Springboot框架Sharding-JDBC 5.4.x版本yaml实现分库、加密、读写分离基于yaml的配置示例更多相关内容可查看需求&#xff1a;按月分区&#xff0c;按年分表&#xff0c;找不到对应年份…

单片机和PLC有哪些区别?揭秘单片机MCU的常见应用

单片机&#xff08;MCU&#xff09;和可编程逻辑控制器&#xff08;PLC&#xff09;作为电子控制系统中的两大核心组件&#xff0c;分别在不同的领域发挥着重要作用。然而&#xff0c;尽管它们都属于自动化控制领域的关键设备&#xff0c;但它们的设计理念、应用场景和性能特点…

ElementUI之Upload 上传的使用

文章目录说明SSM使用引入依赖在spring-mvc.xml中加入配置创建上传工具类AliOssUtil响应工具类ResultJSON编写controller自动上传代码编写结果如下演示手动上传前端代码编写后端代码编写结果演示如下说明 为了方便演示&#xff0c;前后端代码一起写了 关于对象存储请看我另一篇博…

Langchain4j 整合MongoDB 实现会话持久化存储详解

目录 一、前言 二、大模型会话记忆介绍 2.1 AI 大模型会话记忆是什么 2.2 大模型会话记忆常用实现方案 2.3 LangChain4j 会话记忆介绍 三、大模型常用会话存储数据库介绍 3.1 常用的会话存储数据库 3.2 MongoDB 简介 3.2.1 MongoDB 是什么 3.3 为什么选择MongoDB 作为…

SQL 常用 OVER() 窗口函数介绍

1. sum() over() 做组内数据累加在 SQL 中想实现不同分组内数据累加&#xff0c;可以通过 sum() over() PARTITION BY ORDER BY 结合实现。这种方式能同时满足多维度分组且组内累加的需求&#xff0c;示例如下&#xff1a;假设我们有一张 sales 表&#xff0c;表中存储着…

OpenRouter:一站式 AI 模型调用平台,免费畅享千问、DeepSeek 等顶级模型

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事&#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 OpenRouter&#xff1a;一站式 AI 模型调用平台&#xff0c;免费畅享千问、DeepSeek 等顶级模型前…

SpringBoot 整合 Kafka 的实战指南

引言&#xff1a; 本文总字数&#xff1a;约 9800 字预计阅读时间&#xff1a;40 分钟 为什么 Kafka 是高吞吐场景的首选&#xff1f; 在当今的分布式系统中&#xff0c;消息队列已成为不可或缺的基础设施。面对不同的业务场景&#xff0c;选择合适的消息队列至关重要。目前…

OpenCV 实战篇——如何测算出任一副图片中的物体的实际尺寸?传感器尺寸与像元尺寸的关系?

文章目录1 如何测算出任一副图片中的物体的实际尺寸2 传感器尺寸与像元尺寸的关系3 Max Frame Rate最大帧率4 为什么要进行相机标定?相机标定有何意义?5 基于相机模型的单目测距--普通相机1 如何测算出任一副图片中的物体的实际尺寸 物体尺寸测量的思路是找一个确定尺寸的物…

Java并发锁相关

锁相关 ​1. 什么是可重入锁&#xff1f;Java 中如何实现&#xff1f;​​ ​答​&#xff1a; 可重入锁允许一个线程多次获取同一把锁&#xff08;即递归调用时无需重新竞争锁&#xff09;。 ​关键点​&#xff1a;防止死锁&#xff0c;避免线程因重复请求已持有的锁而阻塞。…

Pie Menu Editor V1.18.7.exe 怎么安装?详细安装教程(附安装包)​

​​Pie Menu Editor V1.18.7.exe​ 是一款用于创建和编辑 ​饼图菜单&#xff08;Pie Menu&#xff09;​​ 的工具软件&#xff0c;通常用于游戏开发、UI设计、3D建模&#xff08;如 Blender 等&#xff09;、或自定义软件操作界面。 一、准备工作 ​下载文件​ 下载了 ​Pi…