首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >spring boot集成mapstruct示例

spring boot集成mapstruct示例

原创
作者头像
阿彬学java
发布2025-06-04 11:45:33
发布2025-06-04 11:45:33
6600
举报
文章被收录于专栏:javajava

mapstruct介绍

  • MapStruct是一个代码生成器,它基于约定优于配置的方法,极大地简化了Javabean类型之间映射的实现。生成的映射代码使用简单的方法调用,因此速度快,类型安全,易于理解。
  • 与其他映射框架相比,MapStruct在编译时生成Bean映射,这确保了高性能,允许快速的开发人员反馈和彻底的错误检查。

IDEA配置

  • 确保启用了注解处理。进入 File > Settings > Build, Execution, Deployment > Compiler > Annotation Processors,勾选 Enable annotation processing。

Mapstruct依赖引入

代码语言:java
复制
<dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>3.5.0</version>
    </dependency>

    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.38</version>
    </dependency>

    <dependency>
      <groupId>org.mapstruct</groupId>
      <artifactId>mapstruct</artifactId>
      <version>${mapstruct.version}</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.11.0</version>
        <configuration>
          <source>${java.version}</source>
          <target>${java.version}</target>
          <annotationProcessorPaths>
            <path>
              <groupId>org.mapstruct</groupId>
              <artifactId>mapstruct-processor</artifactId>
              <version>${mapstruct.version}</version>
            </path>
            <path>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
              <version>1.18.38</version>
            </path>
          </annotationProcessorPaths>
        </configuration>
      </plugin>
    </plugins>

创建FileTest类

代码语言:java
复制
@Data
public class FileTest {

    private String name;
    private String proLang;
    private Double height;
    private Date beDate;
    private String address;
    private String girlName;
    private String girlDes;
}

创建FileTestVo类

代码语言:java
复制
@Data
public class FileTestVo {
    private String name;
    private String lang;
    private String height;
    private String beDate;
    private String address;
    private String girlFriend;
}

创建FileTestMapstruct类

  • componentModel = “spring” 通过 Spring 的依赖注入来创建
  • nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS 指定在映射过程中如何处理 null 值
代码语言:java
复制
@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface FileTestMapstruct {

    @Mapping(target = "lang", source = "proLang")
    FileTestVo toFileTestVo(FileTest fileTest);
}

测试接口

代码语言:java
复制
@RestController
@RequestMapping("/file")
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class HelloWorldFileController {

    private final FileTestMapstruct mapstruct;

    @GetMapping("/mapstructTest")
    public FileTestVo mapstructTest() {
        FileTest fileTest = new FileTest();
        fileTest.setName("mapstructTest");
        fileTest.setProLang("lang");
        fileTest.setHeight(1d);
        fileTest.setBeDate(new Date());
        fileTest.setAddress("address");
        fileTest.setGirlName("girlName");
        fileTest.setGirlDes("girlDes");
        return mapstruct.toFileTestVo(fileTest);
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • mapstruct介绍
  • IDEA配置
  • Mapstruct依赖引入
  • 创建FileTest类
  • 创建FileTestVo类
  • 创建FileTestMapstruct类
  • 测试接口
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档