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);
上一篇下一篇

猜你喜欢

热点阅读