mapstruct数据转换和Mabatis plus实现分页
2021-04-23 本文已影响0人
W_神经
一、DTO转VO
1、pom文件导入依赖
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>1.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.2.0.Final</version>
</dependency>
2、建立Mapper文件(非Mybatis的Mapper)
@Mapper(componentModel = "spring")
public interface ScreenConvert {
@Mappings({
@Mapping(expression = "java(com.test.utils.StringUtils.appendToRatio(screenDto.getRatioWidth(), screenDto.getRatioHeight()))", target = "ratio")
})
ScreenVO convertToScreenVo(ScreenDto screenDto);
List<ScreenVO> convertToScreenVo(ScreenDto screenDtos);
}
两个bean的属性名如果一致,就不需要标注,如果不一样需要做映射 ,如上述代码中的@Mappings中指明的映射,将分辨率对应的宽和高拼接一起。如果是字段对应的话可以直接用source 和target 即可,如果是需要经过转换,则需要用expression来指明方法, java(方法名路径)
3、使用
在Service中引入即可
@Autowired
private ScreenConvert screenConvert
到此,数据转换工具就完成了,build的时候,插件会自动生成转换接口的实现类,并且路径为转换接口的包路径。
二、Mybaties plus实现分页
配置参考官网:https://mp.baomidou.com/config/#mapperlocations
service方法
public IPage<ScreenVO> getScreenList(ScreenFilterAO screenFilterAO) {
//获取page对象
Page<ScreenDto> page = new Page<>(screenFilterAO.getPageNum(), screenFilterAO.getPageSize());
//将page对象传到mapper文件,对应的xml文件不需要管page对象了
IPage<ScreenDto> screenDtoIPage = screenMapper.getScreenList(page, screenFilterAO);
//将DTO转成VO
IPage<ScreenVO> screenVoIpage = screenDtoIPage.convert(screenDto -> screenConver.convertToScreenVo(screenDto));
return screenVoIpage;
}
Mapper方法
IPage<ScreenDto> getScreenList(Page page, ScreenFilterAO screenFilterAO);