0


Intellij IDEA中使用mapstruct的坑

前言

在我们日常开发的分层结构的应用程序中,为了各层之间互相解耦,一般都会定义不同的对象用来在不同层之间传递数据,因此,就有了各种

XXXDTO

XXXVO

XXXBO

等基于数据库对象派生出来的对象,当在不同层之间传输数据时,不可避免地经常需要将这些对象进行相互转换。

此时一般处理两种处理方式:① 直接使用

Setter

Getter

方法转换、② 使用一些工具类进行转换(e.g.

BeanUtil.copyProperties

)。第一种方式如果对象属性比较多时,需要写很多的

Getter/Setter

代码。第二种方式看起来虽然比第一种方式要简单很多,但是因为其使用了反射,性能不太好,而且在使用中也有很多陷阱。而今天要介绍的主角 MapStruct 在不影响性能的情况下,同时解决了这两种方式存在的缺点。

介绍

MapStruct

是一个代码生成器,它基于约定优于配置方法极大地简化了

Java bean

类型之间映射的实现。自动生成的映射转换代码只使用简单的方法调用,因此速度快、类型安全而且易于理解阅读,源码仓库

Github

地址 MapStruct。总的来说,有如下三个特点:

  1. 基于注解
  2. 在编译期自动生成映射转换代码
  3. 类型安全、高性能、无依赖性

使用

① 引入依赖

<!--mapStruct依赖-->
<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct</artifactId>
    <version>1.5.2.Final</version>
</dependency>
<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct-processor</artifactId>
    <version>1.5.2.Final</version>
</dependency>

② 创建相关转换对象

1、实体类

2、DTO类

③ 创建转换器类(Mapper)

需要注意的是,转换器不一定都要使用

Mapper

作为结尾,只是官方示例推荐以

XXXMapper

格式命名转换器名称,这里举例的是最简单的映射情况(字段名称和类型都完全匹配),只需要在转换器类上添加

@Mapper

注解即可,转换器代码如下所示

启动程序

我去,怎么编译不了,启动失败

不要慌,这是mapstruct版本问题,我们只需要配置一下IDEA就好了

坚持使用旧版mapstruct

标签: intellij-idea java ide

本文转载自: https://blog.csdn.net/u010089926/article/details/127916557
版权归原作者 xiangduanjava 所有, 如有侵权,请联系我们删除。

“Intellij IDEA中使用mapstruct的坑”的评论:

还没有评论