Spring Boot 配置MapStruct(实体映射工具)

妖狐艹你老母 2023-10-01 18:37 67阅读 0赞

1 MapStruct

MapStruct 就是这样的一个属性映射工具,只需要定义一个 Mapper 接口,MapStruct 就会自动实现这个映射接口,避免了复杂繁琐的映射实现。

2 Maven依赖

  1. <dependency>
  2. <groupId>org.projectlombok</groupId>
  3. <artifactId>lombok</artifactId>
  4. <optional>true</optional>
  5. </dependency>
  6. <!-- mapstruct 实体映射工具 -->
  7. <dependency>
  8. <groupId>org.mapstruct</groupId>
  9. <artifactId>mapstruct-jdk8</artifactId>
  10. <version>1.3.0.Final</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.mapstruct</groupId>
  14. <artifactId>mapstruct-processor</artifactId>
  15. <version>1.3.0.Final</version>
  16. </dependency>

3 实体类

3.1 UserEntity

用户信息实体类。

  1. package com.entity;
  2. import lombok.Data;
  3. import org.springframework.stereotype.Component;
  4. /**
  5. * 用户信息实体类
  6. */
  7. @Component
  8. @Data
  9. public class UserEntity {
  10. private String username;
  11. private String password;
  12. private int sex;
  13. }

3.2 UserVO

用户信息显示类。

  1. package com.vo;
  2. import com.entity.UserEntity;
  3. import lombok.Data;
  4. import org.springframework.stereotype.Component;
  5. /**
  6. * 用户信息显示类
  7. */
  8. @Component
  9. @Data
  10. public class UserVO extends UserEntity {
  11. private String sexName;
  12. }

4 UserVOEntityMapStruct

用户信息Vo和Entity转换类。

  1. package com.mapstruct;
  2. import com.entity.UserEntity;
  3. import com.vo.UserVO;
  4. import org.mapstruct.Mapper;
  5. import org.mapstruct.factory.Mappers;
  6. /**
  7. * 用户信息
  8. * Vo和Entity转换类
  9. */
  10. @Mapper
  11. public interface UserVOEntityMapStruct {
  12. UserVOEntityMapStruct INSTANCE = Mappers.getMapper(UserVOEntityMapStruct.class);
  13. UserVO toUserVO(UserEntity userEntity);
  14. UserEntity toUserEntity(UserVO userVO);
  15. }

5 调试代码

  1. package com.controller;
  2. import com.entity.UserEntity;
  3. import com.mapstruct.UserVOEntityMapStruct;
  4. import com.vo.UserVO;
  5. import org.springframework.web.bind.annotation.GetMapping;
  6. import org.springframework.web.bind.annotation.PostMapping;
  7. import org.springframework.web.bind.annotation.RequestBody;
  8. import org.springframework.web.bind.annotation.RestController;
  9. @RestController
  10. public class MapStructController {
  11. @PostMapping("/testMapStruct")
  12. public UserVO testMapStruct(@RequestBody UserEntity userEntity) {
  13. UserVO userVO = UserVOEntityMapStruct.INSTANCE.toUserVO(userEntity);
  14. userVO.setSexName(userVO.getSex() == 1 ? "男" : "女");
  15. return userVO;
  16. }
  17. }

6 调试结果

watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBA5pet5Lic5oCq_size_20_color_FFFFFF_t_70_g_se_x_16

发表评论

表情:
评论列表 (有 0 条评论,67人围观)

还没有评论,来说两句吧...

相关阅读