-
背景
在SpringBoot项目中,我们通常会使用BeanUtils.copyProperties来实现对象属性拷贝。但是BeanUtils.copyProperties的缺点很明显,如果对象中的字段发生了变化,就会导致拷贝失败,就会在项目中留下潜在的bug。 -
MapStruct介绍
-
使用方法
- Maven导入
<dependencies> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>1.3.0.Final</version> </dependency> </dependencies>- 定义Entity和VO
@Data public class User { private String username; private String password; private Integer age; }@Data public class UserVO { private String username1; private String password1; }- 定义mapper接口
@Mapper(componentModel = "spring") public interface UserToUserVOMapper{ @Mappings({ @Mapping(target = "username",source = "username1") @Mapping(target = "password",source = "password1") }) public UserVO userVO() }- 测试
@Autowired private UserToUserVOMapper userToUserVOMapper; public void test() { UserVO vo = new UserVO(); vo.setUserName("beck"); vo.setPassWord("1111"); User user = userToUserVOMapper.to(vo);// 通过to方法得到 User UserVO vo1 = userToUserVOMapper.form(user);// 通过from方法得到UserVO,既反转to方法。 }- 个人理解
其实@Mapping这个注解的意思就是target.setField(source.getField())
在微服务中整合MapStruct
最新推荐文章于 2025-04-29 18:10:26 发布
本文介绍了MapStruct在SpringBoot项目中的应用,对比BeanUtils.copyProperties,MapStruct提供了类型安全、高性能的bean映射解决方案。通过定义映射器接口,自动处理不同类型的属性映射,提高代码质量和开发效率。
8121

被折叠的 条评论
为什么被折叠?



