MapstructPlus是对Mapstruct框架的一个增强,只做增强,不做修改,可以通过一个注解,自动生成两个类之间的转换操作,省略了Mapstruct定义接口的操作,使Java类型转换更加便捷、优雅。
目标:做最简单、最强大的类型转换工具
链接DocumentGiteeGithub彻底干掉BeanUtils,最优雅的Mapstruct增强工具全新出炉快速开始下面演示如何使用MapStructPlus来映射两个对象。
假设有两个类UserDto和User,分别表示数据层对象和业务层对象:
UserDtopublicclassUserDto{privateStringusername;privateintage;privatebooleanyoung;//getter、setter、toString、equals、hashCode}UserpublicclassUser{privateStringusername;privateintage;privatebooleanyoung;//getter、setter、toString、equals、hashCode}添加依赖引入mapstruct-plus-spring-boot-starter依赖:
<properties><mapstruct-plus.version>1.1.3</mapstruct-plus.version></properties><dependencies><dependency><groupId>io.github.linpeilie</groupId><artifactId>mapstruct-plus-spring-boot-starter</artifactId><version>${mapstruct-plus.version}</version></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>io.github.linpeilie</groupId><artifactId>mapstruct-plus-processor</artifactId><version>${mapstruct-plus.version}</version></path></annotationProcessorPaths></configuration></plugin></plugins></build>指定对象映射关系在User或者UserDto上面增加注解——@AutoMapper,并设置targetType为对方类。
例如:
@AutoMapper(target=UserDto.class)publicclassUser{//...}测试@SpringBootTestpublicclassQuickStartTest{@AutowiredprivateConverterconverter;@Testpublicvoidtest(){Useruser=newUser();user.setUsername("jack");user.setAge(23);user.setYoung(false);UserDtouserDto=converter.convert(user,UserDto.class);System.out.println(userDto);//UserDto{username='jack',age=23,young=false}assertuser.getUsername().equals(userDto.getUsername());assertuser.getAge()==userDto.getAge();assertuser.isYoung()==userDto.isYoung();UsernewUser=converter.convert(userDto,User.class);System.out.println(newUser);//User{username='jack',age=23,young=false}assertuser.getUsername().equals(newUser.getUsername());assertuser.getAge()==newUser.getAge();assertuser.isYoung()==newUser.isYoung();}}小结引入依赖后,使用MapstructPlus步骤非常简单。
给需要转换的类添加AutoMapper注解获取Converter实例,调用convert方法即可
评论