mapstruct使用说明

1.安装两个插件

  • mapstruct-eclipse 插件
    • 插件说明:在写java代码时提供一些格外的帮助信息
    • 安装:eclipse market 中搜索安装
  • m2e-apt 插件
    • 插件说明:编译时自动处理mapstruct注解
    • 安装:访问官网按照提示安装

2.maven依赖引入

...
<properties>
    <org.mapstruct.version>1.4.1.Final</org.mapstruct.version>
</properties>
...
<dependencies>
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct</artifactId>
        <version>${org.mapstruct.version}</version>
    </dependency>
    <dependency>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct-processor</artifactId>
                <scope>${org.mapstruct.version}</scope>
           </dependency>
</dependencies>
...
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.mapstruct</groupId>
                        <artifactId>mapstruct-processor</artifactId>
                        <version>${org.mapstruct.version}</version>
                    </path>
                </annotationProcessorPaths>
                <compilerArgs>
			          <compilerArg>-Amapstruct.suppressGeneratorTimestamp=true</compilerArg>
				      <compilerArg>-Amapstruct.verbose=true</compilerArg>
                      <!--由spring管理转换器类-->
				      <compilerArg>-Amapstruct.defaultComponentModel=spring</compilerArg>
	             </compilerArgs>
            </configuration>
        </plugin>
    </plugins>
</build>

3.java使用

1.数据源类
public class TestEntity{
   private Integer age;
   private Ineger id;
   private String name;
}
public class TestChildEntity{
   private Integer sex;
}
2.目标类
public class TestVo{
   private Integer age;
   private Ineger entityId;
   private String entityName;
   private Integer entitySex;
   private TestEntity testEntity;
}
3.转换器接口
@Mapper
public interface TestConverter {
  @Mappings({
        @Mapping(target = "testEntity", ignore = true),
        @Mapping(source = "id", target = "entityId")
    })
    TestVo testToTestVo(TestEntity entity);
    
    @Mappings({
        @Mapping(source = "child.sex", target = "entitySex"),
        @Mapping(source = "entity.name", target = "entityName")
    })
    TestVo testToTestVo(TestEntity entity, TestChildEntity child);
}

  • 转换器接口要标注@Mapper注解
  • 接口中定义转换器方法,参数作为数据源对象,返回值作为目标对象。如果数据源属性包含目标对象属性则可以省略@Mappings注解
  • @Mappings注解自定义源和目标的属性映射关系,用于源和目标属性不一致的情况
  • 如果有多个数据源,则 @Mapping.source属性值必须要加上方法参数前缀,如上child.sex

4.常用注解说明

  • @Mappings :定义多个映射关系
属性说明
value@Mapping 注解数组
  • @Mappings :定义源和目标对象的属性名映射关系
属性说明
target目标属性名
source源属性名
dateFormat如果源属性是Date类型,目标是String类型,则使用此格式格式化Date
numberFormat如果源属性是数字类型,目标是String类型,则使用此格式格式化数字
ignore忽略目标属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值