1. 程式人生 > 其它 >【java】mapstruct Spring支援的克隆轉化

【java】mapstruct Spring支援的克隆轉化

mapstruct Spring支援的克隆轉化

一.版本引用

1.pom.xml檔案

<org.mapstruct.version>1.2.0.CR1</org.mapstruct.version>


    <!--mapStruct依賴  start-->
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-jdk8</artifactId>
            <version>${org.mapstruct.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
            <version>${org.mapstruct.version}</version>
        </dependency>
        <!--mapStruct依賴  end-->
View Code

二.使用

1.pojo物件

package com.sxd.swapping.mybatis.pojo;

import lombok.Data;

import java.time.LocalDateTime;

/**
 * 資料庫表的POJO
 */
@Data
public class DownloadUpload {

    /**
     * DB 自增ID
     */
    private Long id;

    /**
     * 業務ID
     */
    private Long duId;

    /**
     * 業務名稱
     
*/ private String duName; /** * 業務狀態 列舉值 */ private Integer duStatus; /** * 業務時間 */ private LocalDateTime createTime; }
View Code

2.轉化物件

package com.sxd.swapping.downloadAndUpload.xlsxDownloadAndUpload.vo;


import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import lombok.Data; import java.time.LocalDateTime; @Data @ColumnWidth(25) public class RTReportVO { /** * 業務ID */ @ExcelIgnore private Long duId; /** * 業務ID */ @ExcelProperty(value = "業務ID",index = 0) private String duIdDesc; /** * 業務名稱 */ @ExcelProperty(value = "業務名稱",index = 1) private String duName; /** * 業務狀態 列舉值 */ @ExcelIgnore private Integer duStatus; /** * 業務狀態 列舉描述 */ @ExcelProperty(value = "業務狀態",index = 2) private String duStatusDesc; /** * 業務時間 DB欄位 */ @ExcelIgnore private LocalDateTime createTime; /** * 業務時間 展示欄位 */ @ExcelProperty(value = "業務時間",index = 3) private String createTimeDesc; }
View Code

3.轉化工具定義

package com.sxd.swapping.downloadAndUpload.xlsxDownloadAndUpload.assemble;

import com.sxd.swapping.mybatis.pojo.DownloadUpload;
import com.sxd.swapping.downloadAndUpload.xlsxDownloadAndUpload.vo.RTReportVO;
import org.mapstruct.Mapper;

/**
 * mapstruct
 * Spring支援的克隆
 */
@Mapper(componentModel = "spring")
public interface DUDB2VOAssemble {

    RTReportVO from(DownloadUpload downloadUpload);
}
View Code

4.使用程式碼

List<DownloadUpload> dbResult = dudbService.query(duQuery);
            if (CollectionUtils.isNotEmpty(dbResult)) {
                List<RTReportVO> reportDTOs = dbResult.stream().map(dudb2VOAssemble::from).collect(Collectors.toList());

            }
View Code