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);
总结
之前一直在使用,总结一下,下一步去分析下其内部原理,加油!