• Java编码辅助工具:Mapstruct—— Java对象转换框架


    项目开发中,业务分层会涉及不同类型的Bean之间需要相互转换,如PO与DTO之间,PO与VO之间等。手动编码setter/getter各个对应属性,会显得臃肿繁琐。通过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")

    定义对应的Bean转换方法: 

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

    如果对应属性名称不一致,则可通过

    @Mappings(value={

      @Mapping(target="abc", source="cba"),

      @Mapping(target="acc", source="cca", qualifiedByName="mapMethodName2"), //定义转换的方法

      @Mapping(target="aaa",  constant="123")  //定义常量

    })

    @AfterMapping // 在map属性完之后执行某些操作

    public void afterListMap(@MappingTarget List<XXXVO> xxxVOs) //map完的结果对象 

    @BeforeMapping //在map属性之前执行某些操作

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

  • 相关阅读:
    asp.net core文件上传与下载
    asp.net Core1.1版本生成超链接/a链接标签的方式
    CentOS 7.2 64位上装mysql
    CentOS7 yum 安装 Nginx最新版本
    Mysql Mariadb 密码问题
    关闭selinux
    OTRS
    CentOS查看一共安装了多少软件包,是那些软件包
    CentOS删除安装的程序
    centos7 上安装mysql5.7后登录报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: Yes 或者No)
  • 原文地址:https://www.cnblogs.com/spec-dog/p/9947758.html
Copyright © 2020-2023  润新知