【MapStruct简单使用】

本文介绍了MapStruct这一实体类映射框架,通过注解方式简化对象转换。首先,需引入MapStruct及其编译依赖。接着,定义接口层,创建基础转换类并声明映射方法。最后,在实现层继承接口并使用Mappers.getMapper获取实例,完成对象间的属性映射。文章结尾作者表示将深入研究MapStruct的内部原理。
摘要由CSDN通过智能技术生成


一、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);

}
 List<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);

总结

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值