2021-08-30 mapstructs介绍

背景

随着软件架构分层越来越多,那么各个层次之间的数据模型就要面临着相互转换的问题,典型的就是我们可以在代码中见到各种O,如DO、DTO、VO等。

一般情况下,同样一个数据模型,我们在不同的层次要使用不同的数据模型。如在数据存储层,我们使用DO来抽象一个业务实体;在业务逻辑层,我们使用DTO来表示数据传输对象;到了展示层,我们又把对象封装成VO来与前端进行交互。

这时为了避免大量set/get,和实体类相互转换的冗余代码出现,mapstruct框架应运而生


原理

在编译期,MapStruct就可以直接生成bean映射的代码,会自动生成一个xxMapperImpl,相当于代替我们写了很多setter和getter。因为在编译期做了很多事情,所以MapStruct在运行期的性能会很好,并且还有一个好处,那就是可以把问题的暴露提前到编译期,使得运行期的性能得到了大大的提升。

使用

导入依赖



示例


通常我们可以使用get/set等方式逐一进行字段映射操作,如:


但是,编写这样的映射代码是一项冗长且容易出错的任务。MapStruct等类似的框架的目标是通过自动化的方式尽可能多地简化这项工作。

编译后自动生成的实现类,根据注解自动生成方法

单转换


框架生成的impl


组合转换和集合转换


组合


集合



MyMetaObjectHandler 自动插入时间

 SchedulerLock  数据库为基础做分布式锁

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容