spring boot写接口,dto和vo一般怎么用?
vo是用来返回给前端的吗?dto是用来接收前端传过来的参数吗
回答
别搞这些花里胡哨的 都用map
回复 @名字无法识别 : 20%的代码,支撑了业务系统80%的流量,在重点业务代码,尽量用javabean(我不喜欢叫那些花里胡哨的各种O)。剩下80%的代码,一天调不到几次的,map一波真香。回复 @xiaokek : 正经回答如下,map写的时候省事,spring省去了实体转换(其实这里的性能提升可以忽略不计),适合一锤子买卖。缺点就是可读性基本没有,逼格约等于没有,如果业务复杂,从都到尾全是map,就是个灾难现场,谁看谁头疼回复 @名字无法识别 : 都是些简单的增删改查,我只有entity,没有那些所谓的O!
90%的场景,entity一条龙福务。若是entity满足不了的,map一波真香。回复 @漠孤烟 : 哈哈哈,我天天拍桌子骂出参map入参map的代码,自己写的时候,一偷懒也这么干。其实想开点,一般的crud,无所谓后期维护的便捷性和重构,大不了完全重写。复杂的么,为了自己的不可替代性,更得写得让人看不懂了不是么:satisfied:回复 @xiaokek : 这里没有说前端。单人项目、一次性项目你用map没疑问。多个Java开发的团队协同、长期维护,再用map就是给团队挖坑。因为dto的好处是,类型安全,重构方便,只需点一下立马知道数据结构和存放的属性,而map,你一个controller都返回什么字段给前端了,则得看完所有实现,才知道map里装了什么。
另外无法使用Swagger、也无法实现声明式接口开发流程。
你自己的总结是对的
dto是简化持久层对象字段后的网络传输对象,也是针对后端的数据处理。
回复 @梵蒂冈驻开源中国大使 : 这些都只是些概念,不是标准,前后端通信也完全可以只用json,不用定义这么多结构化对象进行序列化和反序列化影响性能。那接收前端传过来的参数用VO吗
一般来说VO是用来跟前台交互的,不过如果你对分层有基本的概念的话,完全可以自己定一些规范,不是绝对的
回复 @梵蒂冈驻开源中国大使 : 一般用阿里的,搜阿里巴巴java开发规范行业规范是啥
表单Form
数据传输DTO
持久化对象PO
接口返回值VO
这些其实都无所谓,我们封装请求体,叫 xxxRequestBody。不用DTO什么的。
- DO(Data Object):此对象与数据库表结构一一对应,通过DAO层想上传输数据源对象。
- DTO(Data Transfer Object):数据传输对象,Service或Manager向外传输的对象。
- BO(Business Object):业务对象,由Service层输出的封装业务逻辑的对象。
- AO(Application Object):应用对象,在Web层与Service层之间抽象的复用对象模型,极为贴近展示层,复用度不高。
- VO(View Object):显示层对象,通常是Web向模版渲染引擎层传输的对象。
- Query:数据查询对象,各层接收上层的查询请求。注意超过2个参数的查询封装,禁止使用Map类来传输。
这么多转来转去真蛋疼,以前设计系统也是这样搞,后来看着都烦。我们现在一般的系统直接一种对象穿透所有层。
我还用到一个so从前端接参,傻傻分不清楚