Spring Boot用mapstruct实现VO类和实体类转换
程序员文章站
2022-03-30 21:56:09
...
VO类和实体类的转换是我们写业务逻辑代码中很经常用到的东西,最近我们项目组规定统一用mapstruct来做,mapstruct是在程序编译的时候就已经生成了VO类和实体类的转换类,这样子就不用在程序运行的时候才去转换,减少了性能上的损耗。
Maven文件配置:
<dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-jdk8</artifactId> <version>1.3.0.Final</version> </dependency> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>1.3.0.Final</version> <optional>true</optional> </dependency>
新建转换类,是一个接口:
@Mapper(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE,
componentModel = "spring",
injectionStrategy = InjectionStrategy.FIELD)
public interface TestMapper {
/**
* 实体类转为VO类
* @param testModule
* @return
*/
TestVO dormCheckDetailToDormCheckDetailVO(TestModule testModule);
/**
* 列表类的转换
* @param list
* @return
*/
List<TestVO> dormCheckDetailToPageVo(List<TestModule> list);
}
转换关系的字段还可以用@Mappings注解自行设置匹不匹配:
/**
* 实体类转为VO类
* @param testModule
* @return
*/
@Mappings({
@Mapping(source = "date",target ="date",ignore = false)
})
TestVO dormCheckDetailToDormCheckDetailVO(TestModule testModule);
新建完转换类之后直接在业务层里面注入就可以用了:
@Autowired
private TestMapper testMapper;