zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    元组
    list取值
    字符串常用方法
    列表判断存在不存在的两种方法
    jQuery 事件
    jQuery创建元素 添加(内部、外部)
    jQuery元素操作 遍历jquery元素 each(function(i,domEle){})
    失眠怎么办
    这个时间点是最佳的睡眠时间,被称为“美容觉”,你睡对了吗?
    这3种入睡的“小窍门”,或许助你“快速入睡”
  • 原文地址:https://www.cnblogs.com/spec-dog/p/9947758.html
Copyright © 2011-2022 走看看