亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中的MapStruct實現(xiàn)詳解

 更新時間:2023年11月27日 10:20:12   作者:一碼評川  
這篇文章主要介紹了Java中的MapStruct實現(xiàn)詳解,MapStruct 是一個代碼生成器,它基于約定優(yōu)先于配置的方法大大簡化了 JavaBean 類型之間映射的實現(xiàn),生成的映射代碼使用普通方法調用,需要的朋友可以參考下

簡單實現(xiàn)

引入依賴

<dependency>
 <groupId>org.mapstruct</groupId>
 <artifactId>mapstruct-jdk8</artifactId>
 <version>1.3.0.Final</version>
</dependency>
//注解處理器,根據注解自動生成mapper的實現(xiàn)
<dependency>
 <groupId>org.mapstruct</groupId>
 <artifactId>mapstruct-processor</artifactId>
 <version>1.2.0.Final</version>
</dependency>

我們在編譯時會報 java: No property named “numberOfSeats” exists in source parameter(s). Did you mean “null”? 錯誤,經過查閱資料發(fā)現(xiàn) mapstruct-processor 和 Lombok 的版本需要統(tǒng)一一下:mapstruct-processor:1.2.0.Final , Lombok:1.16.14。

準備實體類

Car.java 和 數據傳輸類 CarDto.java

@NoArgsConstructor
@AllArgsConstructor
@Data
public class Car {
    private String make;
    private int numberOfSeats;
    private CarType type;
}

@Data
@NoArgsConstructor
@AllArgsConstructor
public class CarDto {
    private String make;
    private int seatCount;
    private String type;

}

創(chuàng)建映射器接口

定義映射方法

@Mapper
public interface CarMapper {
 
    CarMapper INSTANCE = Mappers.getMapper( CarMapper.class );

    @Mapping(source = "numberOfSeats", target = "seatCount")
    CarDto carToCarDto(Car car); 
   
}

解析分析:

  • @Mapper 將接口標記為映射接口,并允許 MapStruct 處理器在編譯期間啟動。這里的 @Mapper 注解不是 mybatis 的注解,而是 org.mapstruct.Mapper 的;
  • 實際映射方法 carToCarDto() 期望源對象 Car 作為參數,并返回目標對象 CarDto ,方法名可以自由選擇;
  • 對于源對象和目標對象中具有不同名稱的屬性,可以使用 @Mapping 注釋來配置名稱;
  • 對于源對象和目標對象中具有不同類型的屬性,也可以使用 @Mapping 注釋來進行轉換,比如:類型屬性將從枚舉類型轉換為字符串;
  • 一個接口中可以有多個映射方法,對于所有的這些方法,MapStruct 將生成一個實現(xiàn);
  • 該接口的實現(xiàn)實例可以從 Mappers 中獲得,接口聲明一個 INSTANCE,為客戶端提供對映射器實現(xiàn)的訪問。

實現(xiàn)類

我們可以將代碼進行編譯,然后會發(fā)現(xiàn)在 target 文件中生成了 CarMapperImpl.class 文件:

在這里插入圖片描述

從代碼中可以看出 MapStruct 為我們自動生成了 set/get 代碼,并且對枚舉類進行了特殊處理。

客戶端

@Test
public void shouldMapCarToDto() {

    Car car = new Car( "Morris", 5, CarType.SEDAN );
    CarDto carDto = CarMapper.INSTANCE.carToCarDto( car );
    System.out.println(carDto);
    
}

執(zhí)行結果:

在這里插入圖片描述

小結: MapStruct 基于 mapper 接口,在編譯期動態(tài)生成 set/get 代碼的 class 文件 ,在運行時直接調用該 class 文件。

到此這篇關于Java中的MapStruct實現(xiàn)詳解的文章就介紹到這了,更多相關MapStruct實現(xiàn)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Linux(centos7)安裝jdk1.8的詳細步驟

    Linux(centos7)安裝jdk1.8的詳細步驟

    Linux的使用相信大家都要用到java吧,在使用java前我們得先安裝jdk以及配置環(huán)境變量等工作,下面這篇文章主要給大家介紹了關于Linux(centos7)安裝jdk1.8的詳細步驟,需要的朋友可以參考下
    2023-10-10
  • 一文掌握Spring的創(chuàng)建與使用

    一文掌握Spring的創(chuàng)建與使用

    這篇文章詳細介紹了spring的創(chuàng)建與使用,文章中有詳細的代碼示例和圖片介紹,對學習有一定的而參考價值,需要的同學可以參考一下
    2023-04-04
  • 如何在IDEA中快速解決Jar沖突詳解

    如何在IDEA中快速解決Jar沖突詳解

    相信很多同學在過去做項目都遇到過Jar沖突的問題,在本地環(huán)境沒問題,一旦部署到測試或生產環(huán)境突然就啟動報錯,報類似classNotFound的Exception,本文詳細整理了如何在IDEA中快速解決Jar沖突,需要的朋友可以參考下
    2021-06-06
  • Java Class 解析器實現(xiàn)方法示例

    Java Class 解析器實現(xiàn)方法示例

    這篇文章主要通過對class文件的分析,介紹了Java Class 解析器實現(xiàn)方法示例,具有一定參考價值,需要的朋友可以了解下。
    2017-09-09
  • java文件上傳下載功能實現(xiàn)代碼

    java文件上傳下載功能實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了java文件上傳下載功能實現(xiàn)代碼,具有一定的參考價值,感興趣的朋友可以參考一下
    2016-06-06
  • spring-redis-session 自定義 key 和過期時間

    spring-redis-session 自定義 key 和過期時間

    這篇文章主要介紹了spring-redis-session 自定義 key 和過期時間,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • 詳解Spring循環(huán)依賴的解決方案

    詳解Spring循環(huán)依賴的解決方案

    這篇文章主要介紹了詳解Spring循環(huán)依賴的解決方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Springboot+Poi導入Excel表格實現(xiàn)過程詳解

    Springboot+Poi導入Excel表格實現(xiàn)過程詳解

    這篇文章主要介紹了Springboot+Poi導入Excel表格實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • grpc-java?k8s下的負載均衡處理方法

    grpc-java?k8s下的負載均衡處理方法

    這篇文章主要為大家介紹了grpc-java?k8s下的負載均衡的處理方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-02-02
  • Java編程中10個最佳的異常處理技巧

    Java編程中10個最佳的異常處理技巧

    這篇文章主要介紹了Java編程中10個最佳的異常處理技巧,在本文中,將討論Java異常處理最佳實踐,這些Java最佳實踐遵循標準的JDK庫,和幾個處理錯誤和異常的開源代碼,這還是一個提供給java程序員編寫健壯代碼的便利手冊,需要的朋友可以參考下
    2015-01-01

最新評論