代码不规范,亲人两行泪——DTO

啥是DTO

借用别人写的非常好,非常全面的介绍 方便了解DTO

表现层于应用层之间是通过DTO来进行交互的,数据传输对象是没有行为的POCO对象,他的目的是为了对领域对象进行数据封装,实现层与层之间的数据传递。为何不直接将领域对象进行数据传递?因为领域对象更注重领域,DTO更注重数据。由于“富领域模型”的特点,这样会直接将领域对象的行为暴露给表现层。
DTO本身不是业务对象,他是根据UI需求进行设计的。简单来说Model面向业务,我们是通过业务来定义Model的。而DTO是面向UI,通过UI的需求来定义的,通过DTO我们实现了表现层与Model层之间的解耦,表现层不引用Model。如果开发过程中我们的模型变了,而界面没变,我们只需改Model而不需要去改动表现层。

DTO有什么用

DTO 就是为了在客户端和服务器端交换大量的数据,而无需多个细粒度的调用,减少远程调用的数目,避免相关的网络负载,同时提供一种比较优雅的解决方案。

DTO怎么用

1.首先编写一个类用来接收数据库查询或要传的参数字段

//:如下 用来接收数据库查询的数据字段
@Data
@ToString
public class SubscribeDTO {private String startDateTime;private String endDateTime;private String name;private String studentNumber;
}

2.在写一个响应给前端的一个结果集

//如下 响应前端的结果集
@Data
@ToString
@ApiModel(value = "获取预约信息返回数据", description = "获取预约信息返回数据")
public class SubscribeResult {//预约开始时间@ApiModelProperty(value = "预约开始时间", example = "2020-01-04 15:28", notes = "预约开始时间", required = true)private String startDateTime;//预约结束时间@ApiModelProperty(value = "预约结束时间", example = "2020-01-04 16:28", notes = "预约结束时间", required = true)private String endDateTime;//预约人姓名@ApiModelProperty(value = "预约人姓名", example = "张三", notes = "预约人姓名", required = true)private String name;//预约人学号@ApiModelProperty(value = "预约人学号", example = "20200104001", notes = "预约人学号", required = true)private String studentNumber;
}
  1. 通过这个工具 mapstruct 把 DTO映射给Result

@Mapper(componentModel = "spring")
public interface SubscribeConverter {List<SubscribeResult> toSubscribeDTO(List<SubscribeDTO> subscribeDTO);}

业务层使用

    @Overridepublic ApiResult<List<SubscribeResult>> getSubscribeList(ApiParam<?> param) {List<SubscribeDTO> subscribeList = subscribeMapper.findSubscribeList(param.getUuid());return result(subscribeConverter.toSubscribeDTO(subscribeList));}

使用后感

个人觉得在使用时有些麻烦,但是这是一种规范。他帮你省略了一些繁琐的set方法编写也提高了代码安全。 写代码不仅要方便自己也要方便同事。北京代码大队提醒你:“代码不规范,亲人两行泪”

代码不规范,亲人两行泪——DTO相关推荐

  1. 特斯拉又有新游戏可以玩了 网友:行车打游戏,亲人两行泪

    [TechWeb]4月6日,特斯拉在其官方微博上公布车机软件TeslAtari 更新在即,将上线Super Breakout 等新游戏. 特斯拉表示,"TeslAtari 更新在即!在近期将 ...

  2. 使用git的正确方式,Git操作不规范,代码被吞两行泪

    git是开发中必不可少的,其使用虽然简单,但是也是要注意点事项 先commit(本地版本控制),把自己本地修改或者更新的提交到本地库,再pull(下拉更新并且解决冲突等),把远程仓库最新版本拉到本地, ...

  3. 攻略▍ERP不规范 同事两行泪 企业ERP建设的思考和密钥

    作者| 初码张工 编辑|尾草冰淇淋 36大数据获授权发布 最近的很多次对外交流,都聊到了ERP建设的话题,并且无一例外的不那么让人省心,回想我这么多年走过的ERP坑坑路,在这里也写下经验和总结,希望能 ...

  4. 2021-02-21 代码不规范,运维两行泪 代码规范

    代码不规范,运维两行泪 编程江湖中一直盛传着一个段子,那就是要问程序员最讨厌哪 4 件事?那必须是:写注释.写文档.别人不写注释.别人不写文档. 动手写代码前尽量做到心中有数,思考清楚代码框架结构.现 ...

  5. “编程不规范,同事两行泪!”

    [编者按]编程江湖中一直盛传着一个段子,那就是要问程序员最讨厌哪 4 件事?那必须是: 写注释.写文档.别人不写注释.别人不写文档. 更甚者,在<流浪地球>形成刷屏之势之后,仿其而出的&q ...

  6. Python花呗分析模型温馨提醒:支出不规范,收入两行泪

    全世界只有3.14 % 的人关注了 数据与算法之美 春节结束,离开家里混吃混喝的怀抱,我又开始了用花呗.还花呗的无限循环. 花呗给人一种"有钱"的感觉,我不禁思考:像我这种发工资前 ...

  7. 开会迟到,代码不规范,晚上八点半去健身,跟leader坐电梯自己先出去!某新入行程序员被疯狂吐槽!...

    互联网大厂里老人带新人是常事,在这个过程中,由于年龄差距.观念不同.能力差异,很可能会出现误会和矛盾,老人觉得新人不懂事,新人觉得老人太古板. 一个滴滴的程序员在带校招应届生的时候,被对方的种种行为搞 ...

  8. 因代码不规范,码农枪击4名同事,一人情况危急

    作者 | 鱼哥 本文经授权转自鱼哥来说事 据外媒报道,来自美国的一名程序员因同事不写注释,不遵循驼峰命名,括号换行,最主要还天天git push -f 等因素枪击了4名同事,导致一人情况危急. 现在凶 ...

  9. 开会迟到,代码不规范,新人程序员被疯狂吐槽

    本文转载自GitHub技术社区 互联网大厂里老人带新人是常事,在这个过程中,由于年龄差距.观念不同.能力差异,很可能会出现误会和矛盾,老人觉得新人不懂事,新人觉得老人太古板. 一个滴滴的程序员在带校招 ...

  10. 笑话:工作千万条,抬杠第一条。同事不抬杠,感动两行泪

    不知道别人的感受怎样,每次同事遇到问题,让他怎么办,不管多么的明白和正确,结果都是不听.于是吾就改造了一下: 工作千万条,抬杠第一条. 同事不抬杠,感动两行泪.

最新文章

  1. javascript tab切换类LixTabs最新版
  2. 美智库发布报告:《美国在人工智能时代的行动蓝图》
  3. opencv打开raw格式图像
  4. View工作原理(四)view的layout过程
  5. Android开发技巧——自定义控件之自定义属性
  6. SDUT - 2604 Thrall’s Dream(tarjan+拓扑)
  7. NEFU705(数论+DP)
  8. Android下强制打开软键盘
  9. 性能测试--jmeter中的HTTP信息头管理器的使用【8】
  10. H265分辨率解码概述
  11. 推荐两款ios端磁力下载工具
  12. 多多进宝推广团队_多多进宝推广团长玩法指南
  13. java字符串转日期_在java中如何将一个字符串转换为日期?
  14. c语言实现定积分运算
  15. Spring事务管理的总结
  16. 云堡垒机和软件堡垒机哪个好?区别是什么?
  17. XenApp6.5产品BUG
  18. Unity第三人称控制实现方式
  19. Django 数据库连接使用
  20. ava查询mysql的数据_【技术综述】AVA-第一个大规模的美学质量评估数据库

热门文章

  1. 广告数据定量分析:第一章——广告优化中的统计学
  2. Win 10 专业版重新激活详细操作步骤
  3. android屏幕测试工具,OLED屏幕纯色测试工具
  4. 苹果手机语音备忘录在哪_苹果手机的备忘录竟然还有这么多隐藏功能?以前不知道真是可惜了!...
  5. Node.Js实现最最最简单的登录注册
  6. 【公众号】微信进入公众号链接自动获取授权登陆
  7. 神经网络机器翻译的实现
  8. 坐标旋转次序 欧拉角定义 左乘 右乘
  9. Office Word 之画肘形箭头
  10. python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图