• 【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
  • 相关阅读:
    Python环境搭建和开发工具的配置
    教材,教材,国内的教材你为何如此不堪入目?码农,码农,你到底该如何脱离码农?
    从一个新手容易混淆的例子简单分析C语言中函数调用过程
    E3: PS4/PC 莎木3 众筹200万美元 9小时内达成
    [原] blade中C++ singleton的实现
    [百度空间] [转] 四元数(Quaternions)
    [百度空间] [原]DLL导出实例化的模板类
    [百度空间] [转]DLL地狱及其解决方案
    [百度空间] [转+原]虚析构函数
    [百度空间] [转]程序员趣味读物:谈谈Unicode编码
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/15043343.html
Copyright © 2020-2023  润新知