MapStruct使用
背景
在一个成熟可维护的工程中,细分模块后,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); }
文章参考:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Netty 源码阅读入门实战(一)-介绍
1 简介 以 Netty 为底层的框架 Netty 是什么 Netty 技术和方法的特点 设计 针对多种传输类型的统一接口 - 阻塞和非阻塞 简单但更强大的线程模型 真正的无连接的数据报套接字支持 链接逻辑支持复用 易用性 大量的 Javadoc 和 代码实例 除了在 JDK 1.6 + 额外的限制。(一些特征是只支持在Java 1.7 +。可选的功能可能有额外的限制。) 性能 比核心 Java API 更好的吞吐量,较低的延时 资源消耗更少,这个得益于共享池和重用 减少内存拷贝 健壮性 消除由于慢,快,或重载连接产生的 OutOfMemoryError 消除经常发现在 NIO 在高速网络中的应用中的不公平的读/写比 安全 完整的 SSL / TLS 和 StartTLS 的支持 运行在受限的环境例如 Applet 或 OSGI 社区 发布的更早和更频繁 社区驱动
- 下一篇
惊艳,Dubbo域名已改,也不再局限于Java!!
今天作者想去 Dubbo 官网查下相关资料,发现官方域名由 dubbo.io 直接跳转至 dubbo.apache.org 下了,然后突然回想起 Dubbo 已经在 2 月份正式进入了 Apache 孵化器这回事,也就不觉得奇怪了。 看这个新官网还真清新亮丽,对比之前的老官网,这次调整还真不少,我想我有必要给大家重新介绍一下 Dubbo, 结合这次的变更下面给大家总结一下。 什么是 Dubbo ? Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 这里有一篇 Dubbo 详解的好文:Dubbo架构设计详解,可以了解更多。 Dubbo主要特性 面向接口代理的高性能RPC调用 服务自动注册与发现 运行期流量调度 智能负载均衡 高度可扩展能力 可视化的服务治理与运维 Dubbo新变化 1、官网切换了新域名:dubbo.apache.org。 2、官网支持中英文切换,默认为英文。 3、最大的调整和亮点是 Dubbo 开始多语言,不再是 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- CentOS8编译安装MySQL8.0.19
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Mario游戏-低调大师作品
- CentOS6,CentOS7官方镜像安装Oracle11G