Spring Boot 2 实战:集成 MapStruct 类型转换神器

本文介绍了如何在Spring Boot 2项目中集成MapStruct,一个强大的类型转换工具,以解决手动对象转换的繁琐工作。通过引入MapStruct依赖,创建映射接口,利用注解简化映射方法,以及将其编译生成实现类,可以显著提高代码的简洁性和可维护性。此外,文章还探讨了MapStruct的进阶用法,包括格式化操作、Java表达式和Mapper注入Spring IoC容器。
摘要由CSDN通过智能技术生成

在这里插入图片描述

1. 痛点

一种框架的出现都要解决个痛点,我想下面这这种不方便的操作经常有人写吧。
假如Car类是数据库映射类:
​​

 package cn.felord.mapstruct.entity;

 import lombok.Data;

 /**
  * Car
  **/
 @Data
 public class Car {
     private String make;
     private int numberOfSeats;
     private CarType type;

 }

CarType 类:

 package cn.felord.mapstruct.entity;

 import lombok.Data;

 /**
  * CarType
  **/
 @Data
 public class CarType {
     private String type;
 }

​​
CarDTO是DTO类:

 package cn.felord.mapstruct.entity;

 import lombok.Data;

 /**
  * CarDTO
  **/
 @Data
 public class CarDTO {
     private String make;
     private int seatCount;
     private String type;
 } 

​​
我们从数据库查询Car 然后需要转换为CarDTO,通常我们会这么写一个方法进行转换:

     public CarDTO carToCarDTO(Car car) {
         CarDTO carDTO = new CarDTO();

         carDTO.setMake(car.getMake());
         carDTO.setSeatCount(car.getNumberOfSeats());
         carDTO.setType(car.getCarType().getType());
         // 有可能更长 
         return carDTO;
     } 

​​这种写法非常繁琐无味,而且没有技术含量。甚至中间还牵涉了很多类型转换,嵌套之类的繁琐操作,而我们想要的只是建立它们之间的映射关系而已。有没有一种通用的映射工具来帮我们搞定这一切。当然有而且还不少。有人说apache的BeanUtil.copyProperties可以实现,但是性能差而且容易出异常,很多规范严禁使用这种途径。以下是对几种对象映射框架的对比,大多数情况下 MapStruct 性能最高。原理类似于lombokMapStruct都是在编译期进行实现,而且基于GetterSetter,没有使用反射所以一般不存在运行时性能问题。
​​
[图片上传失败...(image-5cb24a-1649493156536)]

今天就搞一搞MapStruct, 并跟Spring Boot 2.x 集成以下。 无论是idea 还是eclipse 都建议安装 MapStruct Plugin 插件,当然不安装也是可以的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值