您的位置 首页 java

开发好物推荐14之java实体快速DO 与DTO映射转换

前言

按标准化领域驱动设计的规范, java 项目中Bean,分为 PO(Persistent Object),DO(Domain Object),DTO(Data Transfer Object),VO(View Object)。但是项目中的同事没有遵循这个规范,代码都是把PO直接返还给视图层,这样有2个弊端:

1 返回了许多多余字段,减少了网络传输数据的速率。

2 引起前端人员不满,他们觉得字段多他们自己调试起来也很麻烦,忍不住吐槽。

于是我就担负起了解决这个问题的重任,我在项目中加了一层DTO,精简没必要传给试图层的数据,但是我又不想用set,get这样低级的方法进行转换,也不想用 Spring的BeanUtils类进行转换,因为此工具运用反射实现,调用次数多的时候,会有性能问题,于是我在度娘前苦苦求了几天无眠,俗话说念念不忘必有回响:终于找到了一个更好的解决方案,特地分享给大家。

推荐理由

  1. 开源jar包,使用方便简单
  2. 复制对象时字段类型不一致可以转换
  3. 复制对象时字段名称不一致可以转换
  4. 集合类的复制可以轻松实现
  5. 不存在性能问题

实践

1 引入jar包

     <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct</artifactId>
        <version>1.4.1.Final</version>
    </dependency>  

2 引入编译插件

 <plugin>
            <groupId>org. apache . maven .plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.mapstruct</groupId>
                        <artifactId>mapstruct-processor</artifactId>
                        <version>1.4.0.Final</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>  

3 创建类 Goods ,Shop, GoodsDTO

开发好物推荐14之java实体快速DO 与DTO映射转换

开发好物推荐14之java实体快速DO 与DTO映射转换

开发好物推荐14之java实体快速DO 与DTO映射转换

4 使用转换

开发好物推荐14之java实体快速DO 与DTO映射转换

5 执行maven编译,生成实现类

开发好物推荐14之java实体快速DO 与DTO映射转换

测试

总结: 原理是在 编译时 ,利用插件生成实现类。

致谢

感谢看文章的小伙伴,如果有疑问欢迎交流,如果能加下关注就更好了,你们的关注是我持续更新的动力,让我们用好工具,减少打工人的工作时间,有更多的时间陪伴家人和思考这个世界。

文章来源:智云一二三科技

文章标题:开发好物推荐14之java实体快速DO 与DTO映射转换

文章地址:https://www.zhihuclub.com/178595.shtml

关于作者: 智云科技

热门文章

网站地图