首页 > 其他分享 >【MapStruct简单使用】

【MapStruct简单使用】

时间:2022-10-17 12:02:56浏览次数:61  
标签:INSTANCE 实体类 source MapStruct 简单 mapstruct AppVersionConverter 使用 注解


MapStruct简单使用说明


一、mapstruct简介

    mapstruct是一种实体类映射框架,能够通过Java注解将一个实体类的属性安全地赋值给另一个实体类。有了mapstruct,只需要定义一个映射器接口,声明需要映射的方法,在编译过程中,mapstruct会自动生成该接口的实现类,实现将源对象映射到目标对象的效果。  

二、使用步骤

1.引入库

代码如下(示例):

<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.5.0.Beta1</version>
</dependency>
<!--mapstruct编译-->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.5.0.Beta1</version>
</dependency>

2.接口层

代码如下(示例):

/**
* <p>
* 基础转换类,提供基本的几个方法,直接继承就可以,如果有需要写Mappings的写在 {@link #to(Object)} 方法上
* 并且接口类上一定要加上 {@link org.mapstruct.Mapper} 注解
* 默认注解,需要单独定义 如 TestMapper MAPPER = Mappers.getMapper(TestMapper.class); 以此进行实例创建和调用
* 或者如下
* </p>
*
* @author dujuan
*/
public interface BasicObjectConverter<SOURCE, TARGET> {

/**
* 如有需要自定义该注解即可
* 例如:
*
* @Mappings({
* @Mapping(source = "code", target = "TestCode"),
* @Mapping(source = "name", target = "TestName")
* })
* <p></p>
* 重写此注解时一定要注意 返回值(TARGET) 和 参数(SOURCE) 的顺序
*/
@Mappings({})
@InheritConfiguration
TARGET to(SOURCE source);

@InheritConfiguration
List<TARGET> to(Collection<SOURCE> source);

@InheritInverseConfiguration
SOURCE from(TARGET source);

@InheritInverseConfiguration
List<SOURCE> from(Collection<TARGET> source);
}

2.实现层

Mapper(componentModel = "spring")
public interface AppVersionConverter extends BasicObjectConverter<AppVersionModel, AppVersionEntity> {

AppVersionConverter INSTANCE = Mappers.getMapper(AppVersionConverter.class);

}
<AppVersionModel> modelList = AppVersionConverter.INSTANCE.from(entityList);
AppVersionEntity entity = AppVersionConverter.INSTANCE.to(model);
AppVersionModel model = AppVersionConverter.INSTANCE.from(entity);
List<AppVersionEntity> entityList = AppVersionConverter.INSTANCE.to(modelList);

总结

之前一直在使用,总结一下,下一步去分析下其内部原理,加油!


标签:INSTANCE,实体类,source,MapStruct,简单,mapstruct,AppVersionConverter,使用,注解
From: https://blog.51cto.com/u_15586641/5762065

相关文章