有关 springboot 接受参数和返回参数的问题

2022-09-09 09:12:57 +08:00
 kqq19930511

比如数据库有个表,对应 java 模型是:

public class User {
    @Comment("用户 id")
    @Column(length = 36)
    private String id;
    @Comment("用户名")
    private String username;
    @Comment("昵称")
    private String nickname;
    @Comment("登录密码")
    private String password;
    @Comment("密码过期时间")
    private Date passwordExireTime;
    @Comment("0: 新用户 1: 正常使用 2:停止使用")
    private Integer status;
    @Comment("最近登录时间")
    private Date loginTime;
    @Comment("连续登录错误次数")
    private Integer loginErrorCount;
    @Comment("创建时间")
    private Date createdAt;
    @Comment("所属组")
    private String userGroupId;
}

举个例子,现在有新增、删除、更新接口,每个接口传的参数不一样并且校验参数的逻辑也不一样,现在我的处理是生成三个参数对象: InsertUserForm 、DeleteUserForm 、UpdateUserForm ,然后用不同的校验逻辑,这三个对象都会返回不同的参数,需要新建三个对象存储返回参数 InsertUserVO, DeleteUserVO, UpdateUserVO ,想问一下实际怎么处理这些情况的?

2860 次点击
所在节点    Java
23 条回复
Morii
2022-09-10 00:45:49 +08:00
分开降低心智负担,简单的业务倒是可以用 Groups ,等到你针对这个 Entity 的业务变多了,那些个 b 注解能看的吐血
liangkang1436
2022-09-10 10:38:48 +08:00
分组校验的最大的好处是集中校验逻辑,集中错误信息,在应用的多个层面对同一个实体进行校验的时候去除重复代码,但是坏处就是当分组较多的时候,看起来会有点乱(虽然这在我看来不是缺点),跟 swagger 的适配应该也不是难事,毕竟 beanvalidation 都发展这些年了,不可能不兼容。
liangkang1436
2022-09-10 10:41:18 +08:00
强烈不建议用 map 传参,代码的可读性和可维护性都会特别差,尽量使用类型参数,用面向对象的思想封装参数,将来你看自己的代码,到处都是 map ,不调试不根本不知道里面到底都是啥内容

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/878798

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX