您现在的位置是:首页 > 文章详情

MapStruct使用

日期:2018-07-12点击:1338

背景

在一个成熟可维护的工程中,细分模块后,domian工程最好不要被其他工程依赖,但是实体类一般存于domain之中,这样其他工程想获取实体类数据时就需要在各自工程写model,自定义model可以根据自身业务需要而并不需要映射整个实体属性。
mapstruct这个插件就是用来处理domin实体类与model类的属性映射,定义mapper接口,mapstruct就会自动的帮我们实现这个映射接口,避免了麻烦复杂的映射实现。

如何使用?

1、简单封装

 import org.mapstruct.InheritConfiguration; import org.mapstruct.InheritInverseConfiguration; import org.mapstruct.Mappings; import java.util.Collection; import java.util.List; /** * @author jack cooper * <p></p> * 基础转换类,提供基本的几个方法,直接继承就可以,如果有需要写Mappings的写在 {@link #to(Object)} 方法上 * 并且接口类上一定要加上 {@link org.mapstruct.Mapper} 注解 * 默认注解,需要单独定义 如 CategoryMapper MAPPER = Mappers.getMapper(CategoryMapper.class); 以此进行实例创建和调用 * 或者如下 * * @Mapper(componentModel = "spring") 此注解可通过spring进行注入。 */ public interface BasicObjectMapper<SOURCE, TARGET> { /** * 如有需要自定义该注解即可 * 例如: * * @Mappings({ * @Mapping(source = "code", target = "categoryCode"), * @Mapping(source = "name", target = "categoryName") * }) * <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

开发中如需要对象转换操作可直接新建interface并继承BasicObjectMapper<SOURCE,TARGET>,并在新建的接口上加上 @Mapper(componentModel = "spring"),

3、字段不一致地方配置mapping

import com.ampmind.framework.api.base.BasicObjectMapper; import com.ampmind.service.skumng.api.protocol.vo.CategoryVo; import com.ampmind.service.skumng.domain.ProductCategory; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; /** * Created by SongJian on 2017/3/30. * */ @Mapper(componentModel = "spring") public interface CategoryMapper extends BasicObjectMapper<CategoryVo, ProductCategory> { @Mappings({ @Mapping(source = "code", target = "categoryCode"), @Mapping(source = "name", target = "categoryName") }) ProductCategory to(CategoryVo source); } 

文章参考:

https://blog.csdn.net/jtf8525140/article/details/78130601

https://www.tuicool.com/articles/uiIRjai

原文链接:https://yq.aliyun.com/articles/637869
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章