POJO转VO,让你不再痛苦

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJO转VO,让你不再痛苦相关的知识,希望对你有一定的参考价值。

参考技术A 导入依赖,一般是结合lombok一起使用,不然略显单调(lombok的使用说明可以查看之前文章):

其实还有另外一种方式,就是基于maven插件的做法,就可以不用导入 mapstruct-processor 了。

但是一般还是使用的第一种方式。
然后在idea->settings->annotation processors->启用注解处理

准备一个Goods 对象和User对象:

现在我需要拿到商品和用户信息,只需要新建一个DTO--GoodsInfoDTO:

然后一个一个的set属性吗?NO,来看mapStruct怎么做的。
新建一个converter类,名字随意,我这里叫 GoodsInfoConverter :

其中的 GoodsInfoConverter INSTANCE = Mappers.getMapper(GoodsInfoConverter.class); 必不可少,类似于一个SPI接口,就可以让你再客户端通过GoodsInfoConverter.INSTANCE获取到它的实例。
下面的@Mappings就是对象-DTO之间的映射关系,这里要转换 goods 、 user 对象到DTO,所以传入了两个参数。其中的 source 是需要转换的对象属性,如果有多个对象需要转换,则需要在前面加入对应的对象名,例如 goods.id ,用过hibernate的同学会觉得格外小清新~.其中的 target 是DTO中的属性名,如果需要转换的对象和DTO属性名相同,则不需要配置。还有一些其它参数,我就不一一介绍了。

最重要的一步,就是编译,mvn clean一下:
你会发现在target目录的generated-sources下会生成一个 GoodsInfoConverterImpl :

完全是自动生成的,你不需要管。当我们mvn打包的时候会自动将该文件打包进去。
客户端怎么使用呢?来看一下:

是不是很简单,而且省去了很多事,比bean copy的性能也要好。完全是基于set来实现的。

mapStruct集成lombok时,lombok的版本设置成新版本吧。反正笔者1.16.8的lombok会报错,提示Mappings找不到映射的属性,1.16.18是可以编译通过的。如果你觉得这些还不够用,可以去查看官网,谢谢~

快速理解 POJO,VO,DO,DTO,Entity

项目中总是能看到包名叫 POJO,VO,DO,DTO,Entity的一些包,这些包中的对象是什么用处呢 ?本文可以让你快速理解,适合小白!

文章目录


先来一张图帮助理解:


POJO

全称:Plain Ordinary Java Object
POJO对象的特点:

  1. 类型中如果存在成员变量,必须提供get,set方法。
  2. 提供默认无参构造
  3. 可以实现Serializable,也可以不实现。
  4. 不能实现容器或者框架所规定的接口。

POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。
所以这些都属于POJO


VO

全称:Value Object

显示层对象,通常是Web向模板渲染引擎层传输的对象。
用于封装后端给前端返回的出参对象。一般命名为xxxVO
对应的入参对象可以封装为xxxParam


DTO

全称:Data Transfer Object
数据传输对象,Service或Manager向外传输的对象
例如在Service中需要请求其他的API,发起HTTP请求。这时候API需要有入参,我们就可以用DTO来封装一个对象作为该API 的入参

数据传输对象:xxxDTO,xxx为业务领域相关的名称。


DO

全称:Data Object
用于封装DAO层中的对象,通过DAO层向上传输数据源对象。
数据对象:xxxDO,xxx即为数据表名。
例如有一个需求需要连接两个表查询,这样就没有一个实体可以接受查询结果了,这种情况下封装一个DO就是很好的解决办法。


Entity

全称:Plain Ordinary Java Object
与数据库中表的字段一一对应,用于接受表中数据的对象
xxxEntity,用于实体类。

以上是关于POJO转VO,让你不再痛苦的主要内容,如果未能解决你的问题,请参考以下文章

技能 + buff ,才能让你摆脱出卖时间的痛苦

4.4.2 空合并操作符让比较不再痛苦

让我们一起搭建samba服务,共享文件不再痛苦

让我们一起搭建samba服务,共享文件不再痛苦

让我们一起搭建samba服务,共享文件不再痛苦

人性-颓靡