最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java編碼輔助工具M(jìn)apstruct用法詳解

 更新時間:2019年06月25日 10:14:25   作者:空山新雨  
這篇文章主要介紹了Java編碼輔助工具M(jìn)apstruct用法詳解,手動編碼setter/getter各個對應(yīng)屬性,會顯得臃腫繁瑣。通過Mapstruct框架可簡單方便地完成這一工作。,需要的朋友可以參考下

前言

項目開發(fā)中,業(yè)務(wù)分層會涉及不同類型的Bean之間需要相互轉(zhuǎn)換,如PO與DTO之間,PO與VO之間等。手動編碼setter/getter各個對應(yīng)屬性,會顯得臃腫繁瑣。通過Mapstruct框架可簡單方便地完成這一工作。

如何引入:

IntelliJ IDEA中安裝MapStruct Support插件:File -> Settings -> Plugins 搜索 MapStruct support 安裝,同時File -> Settings -> Compiler -> Annotation Processors 勾選“Enable annotation processing”

pom.xml中加入依賴

<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>1.2.0.Final</version>
<scope>provided</scope>
</dependency>

build配置

<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.2.0.Final</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

常用注解使用

@Mapper

修飾接口或抽象類, 如果使用spring來管理,則:@Mapper(componentModel = "spring")

定義對應(yīng)的Bean轉(zhuǎn)換方法:

public abstract XXXVO map(XXXPO xxxPo);
public abstract List<XXXVO> map(List<XXXPO> xxxPos);

如果對應(yīng)屬性名稱不一致,則可通過

@Mappings(value={
@Mapping(target="abc", source="cba"),
@Mapping(target="acc", source="cca", qualifiedByName="mapMethodName2"), //定義轉(zhuǎn)換的方法
@Mapping(target="aaa", constant="123") //定義常量
})

@AfterMapping

在map屬性完之后執(zhí)行某些操作

public void afterListMap(@MappingTarget List<XXXVO> xxxVOs) //map完的結(jié)果對象 

@BeforeMapping

在map屬性之前執(zhí)行某些操作

public void beforeListMap(Object anySource, @MappingTarget List<XXXPO> xxxVOs)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 新手入門Jvm-- JVM對象創(chuàng)建與內(nèi)存分配機制

    新手入門Jvm-- JVM對象創(chuàng)建與內(nèi)存分配機制

    JVM是Java Virtual Machine(Java虛擬機)的縮寫,JVM是一種用于計算設(shè)備的規(guī)范,它是一個虛構(gòu)出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現(xiàn)的
    2021-06-06
  • Java設(shè)計模式之動態(tài)代理

    Java設(shè)計模式之動態(tài)代理

    今天小編就為大家分享一篇關(guān)于Java設(shè)計模式之動態(tài)代理,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Springcloud seata nacos環(huán)境搭建過程圖解

    Springcloud seata nacos環(huán)境搭建過程圖解

    這篇文章主要介紹了Springcloud seata nacos環(huán)境搭建過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Java解析使用JSON的多種方法

    Java解析使用JSON的多種方法

    使用JSON作為數(shù)據(jù)傳輸,在瀏覽器端非常方便。JSON去除了所有JavaScript執(zhí)行代碼,只保留對象格式,而且JSON天生適合JavaScript處理,所以,絕大多數(shù)REST?API都選擇JSON作為數(shù)據(jù)傳輸格式?,F(xiàn)在問題來了:使用Java如何對JSON進(jìn)行讀寫?
    2022-12-12
  • 圖文講解IDEA中根據(jù)數(shù)據(jù)庫自動生成實體類

    圖文講解IDEA中根據(jù)數(shù)據(jù)庫自動生成實體類

    這篇文章主要以圖文講解IDEA中根據(jù)數(shù)據(jù)庫自動生成實體類,本文主要以Mysql數(shù)據(jù)庫為例,應(yīng)該會對大家有所幫助,如果有錯誤的地方,還望指正
    2023-03-03
  • 修改Android應(yīng)用的樣式的一些關(guān)鍵點解析

    修改Android應(yīng)用的樣式的一些關(guān)鍵點解析

    這篇文章主要介紹了修改Android應(yīng)用的樣式的一些關(guān)鍵點,即對影響外觀的theme跟style的相關(guān)修改,需要的朋友可以參考下
    2015-12-12
  • 詳解在spring boot中配置多個DispatcherServlet

    詳解在spring boot中配置多個DispatcherServlet

    本篇文章主要介紹了詳解在spring boot中配置多個DispatcherServlet,具有一定的參考價值,有興趣的可以了解一下。
    2017-03-03
  • 關(guān)于jvm的垃圾回收器以及觸發(fā)full gc的場景

    關(guān)于jvm的垃圾回收器以及觸發(fā)full gc的場景

    這篇文章主要介紹了關(guān)于jvm的垃圾回收器以及觸發(fā)full gc的場景,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 淺談對java中鎖的理解

    淺談對java中鎖的理解

    本文主要講述java中鎖的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03
  • Java LinkedHashMap 底層實現(xiàn)原理分析

    Java LinkedHashMap 底層實現(xiàn)原理分析

    LinkedHashMap繼承自HashMap實現(xiàn)了Map接口?;緦崿F(xiàn)同HashMap一樣,不同之處在于LinkedHashMap保證了迭代的有序性。其內(nèi)部維護了一個雙向鏈表,解決了 HashMap不能隨時保持遍歷順序和插入順序一致的問題。
    2021-05-05

最新評論

丰城市| 洮南市| 商丘市| 阿巴嘎旗| 潢川县| 庆阳市| 象州县| 达拉特旗| 灵川县| 祁连县| 盖州市| 普陀区| 文登市| 枣阳市| 阿勒泰市| 长治县| 石棉县| 延津县| 恩施市| 渭南市| 鹤峰县| 邓州市| 东丽区| 武乡县| 伊春市| 阳高县| 四平市| 德清县| 枣庄市| 通化市| 临清市| 成安县| 贵定县| 阳东县| 岑巩县| 万全县| 安龙县| 河北省| 玛纳斯县| 衡阳县| 永川市|