【java】mapstruct Spring支援的克隆轉化
阿新 • • 發佈:2021-07-22
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-->
二.使用
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; /** * 業務名稱View Code*/ private String duName; /** * 業務狀態 列舉值 */ private Integer duStatus; /** * 業務時間 */ private LocalDateTime createTime; }
2.轉化物件
package com.sxd.swapping.downloadAndUpload.xlsxDownloadAndUpload.vo; import com.alibaba.excel.annotation.ExcelIgnore;View Codeimport 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; }
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