在微服务中整合MapStruct

小咪咪 2023-06-08 04:58 65阅读 0赞
  • 背景
    在SpringBoot项目中,我们通常会使用BeanUtils.copyProperties来实现对象属性拷贝。但是BeanUtils.copyProperties的缺点很明显,如果对象中的字段发生了变化,就会导致拷贝失败,就会在项目中留下潜在的bug。
  • MapStruct介绍

    • GitHub地址
    • 官方文档
    • MapStruct 是用于生成类型安全,高性能和无依赖 bean映射代码的注释处理器,使用时只需要定义一个映射器接口来声明任何需要的映射方法
    • 在进行数据转换时,如果源和目标实体中映射属性的类型不同,则 MapStruct将应用自动转换
  • 使用方法

    • Maven导入



      org.mapstruct
      mapstruct
      1.3.0.Final

    • 定义Entity和VO

      @Data
      public class User {

      1. private String username;
      2. private String password;
      3. private Integer age;

      }

      @Data
      public class UserVO {

      1. private String username1;
      2. private String password1;

      }

    • 定义mapper接口

      @Mapper(componentModel = “spring”)
      public interface UserToUserVOMapper{

      1. @Mappings({
      2. @Mapping(target = "username",source = "username1")
      3. @Mapping(target = "password",source = "password1")
      4. })
      5. public UserVO userVO()

      }

    • 测试

      @Autowired
      private UserToUserVOMapper userToUserVOMapper;

      public void test() {

      1. UserVO vo = new UserVO();
      2. vo.setUserName("beck");
      3. vo.setPassWord("1111");
      4. User user = userToUserVOMapper.to(vo);// 通过to方法得到 User
      5. UserVO vo1 = userToUserVOMapper.form(user);// 通过from方法得到UserVO,既反转to方法。

      }

    • 个人理解
      其实@Mapping这个注解的意思就是target.setField(source.getField())

发表评论

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

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

相关阅读