Java 增删改查都要对应一个 DTO 接收前端传参吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Vimax
V2EX    Java

Java 增删改查都要对应一个 DTO 接收前端传参吗?

  •  1
     
  •   Vimax 2020 年 7 月 31 日 4540 次点击
    这是一个创建于 2093 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如创建用户,使用 userInsertDTO 绑定前端的参数并用 @Validated 校验,包含的参数:

    • name
    • age
    • birthday
    • gender
    • .....

    如果是修改用户,一般会多一个用户的 id,使用 userUpdateDTO 接收前端参数,并用 @Validated 校验

    • id
    • name
    • age
    • birthday
    • gender
    • .....

    或者 userUpdateDTO 只带一个 id,然后继承 userInsertDTO 的参数。并用 @Validated 校验

    如果查询也用对象接收,条件查询 name,age 等参数都不是必须传,那我是否需要新建一个 userQueryDTO,并用 @Validated 校验。

    • name
    • age

    这样子每个 PO,都要创建多个 DTO 。同样,如果我如果要返回数据给前端,也要创建很多个 VO 返回数据给前端。

    这样会冗余吗?有每有更好的方法?

    10 条回复    2020-08-01 15:25:17 +08:00
    Hurriance
        1
    Hurriance  
       2020 年 7 月 31 日
    @Validated 可以实现分组检验的,具体百度一下
    wangyanrui
        2
    wangyanrui  
       2020 年 7 月 31 日
    如 1 楼所说,group = xxx 即可。
    但是个人喜欢分成多个,即更新是更新的,修改是修改的~
    Tokiomi
        3
    Tokiomi  
       2020 年 7 月 31 日
    感觉分开比较好,但是懒
    gdtdpt
        4
    gdtdpt  
       2020 年 7 月 31 日
    分开好,大项目里牵一发动全身太难受了
    Cbdy
        5
    Cbdy  
       2020 年 7 月 31 日
    这是合理做法的比较吧,你不想毕竟个加数据库字段,就要跟接口着变
    kvkboy
        6
    kvkboy  
       2020 年 7 月 31 日
    个人观点哈,除非你这个 DTO 涉及到多个不同的业务对象你可以考虑分开,毕竟页面操作这种就很难说什么单一职责了,极端情况就是点一个按钮数据库被刷了一轮然后爆炸了。

    如果是 1 对 1,你就该想一下,为什么不直接用 PO 而要麻烦的用一个 DTO 。

    没道理你这个 InsertDTO 需要改动的地方,updateDTO 不会有变化

    Validate 的话楼上的说了,可以分组

    至于 VO 确实是硬伤,不过也有 GraphQL 用(但是我没用过,逃
    luxinfl
        8
    luxinfl  
       2020 年 7 月 31 日
    我比较愿意分开多个 dto 来接参数,这样看起来清晰明了,要是几个接口的参数都放在一个 dto,就感觉很挤。
    but
    我现在就是放在一起的,因为懒
    nozer
        9
    nozer  
       2020 年 7 月 31 日
    这是对前端最基本的尊重。

    只取且取,我要的。
    只给且给,你要的。
    KuroNekoFan
        10
    KuroNekoFan  
       2020 年 8 月 1 日
    minimal api 了解一下
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5390 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 99ms UTC 06:41 PVG 14:41 LAX 23:41 JFK 02:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86