数据库保存或更新返回值的问题, void or int ?

2022-06-08 10:59:27 +08:00
 leeqingshui

  对数据库 insert 或 update 后会返回受影响的行数,那么这个行数需要返回给前端吗?

    public int insert(OrgDTO orgDTO) {
        OrgEntity orgEntity = new OrgEntity();
        BeanUtils.copyProperties(orgDTO, orgEntity);
        String curUsername = userLocalService.getUsername();
        orgEntity.setId(idWorkerUtil.nextId())
                 .setCreateUsername(curUsername);
        return orgMapper.insert(orgEntity);
    }

  第一种方式如上使用 int 返回给前端,这需要 return ,那么若遇到这种情况:

   int count = orgMapper.insert(orgEntity);
   // 缓存
   ...
   return count;

  即使返回返回了 int 给前端,但针对新增更新这种接口,前端一般是直接判断后端状态码是否等于 200 ,不会进一步去看返回行数是否大于一吧?另外出错的话也是被全局异常拦截,所以此时返回 int 无意义?

  那么请教下各位,你们一般针对这种简单的保存和更新接口返回值用的是啥的,用 void ?

    public void insert(OrgDTO orgDTO) {
        OrgEntity orgEntity = new OrgEntity();
        BeanUtils.copyProperties(orgDTO, orgEntity);
        String curUsername = userLocalService.getUsername();
        orgEntity.setId(idWorkerUtil.nextId())
                 .setCreateUsername(curUsername);
        orgMapper.insert(orgEntity);
    }
1767 次点击
所在节点    Java
6 条回复
alen0206
2022-06-08 11:13:34 +08:00
可以返回新增或更新后的实体 也可以返回 true or false (不过一般新增出错 都会抛出异常 给前端提示了)
Huelse
2022-06-08 11:20:47 +08:00
默认返回 1 或 0 ,或返回影响的 ID
kaers
2022-06-08 11:40:07 +08:00
除非前端需要用到这个 count. 一般都不返回的, 前端只需要知道执行结果是成功还是失败就行了
leeqingshui
2022-06-08 11:40:24 +08:00
@alen0206 嗯嗯,这个问题应该是主要兼容前端去考虑,返回新增或更新后的实体这个在部分场景前端确实需要,比如前端准备新增或更新数据前端会需要一个对话框表单,若点击保存调后端接口后弹框不关闭(此对话框又属于另一个对话框里的一部分),那么确实需要返回实体给前端;
true or false 前端一般是直接判断后端状态码是否等于 200 ,不会进一步去看这个字段值,一般新增出错 都会抛出异常 给前端提示了,似乎没多大意义。
nice~
nothingistrue
2022-06-08 14:02:09 +08:00
全 ORM 的惯例是:
保存(新增或修改)返回修改后的实体;
单独的新增方法返回新增后的实体或者主键;
单独的增量修改方法返回修改后的实体或者主键;
删除返回删除前的重新查询的实体;
批量 /动态修改,及批量 /动态删除,返回实际受影响的行数。

惯例只是惯例,是否遵循取决于自身得需要。但是,绝对不能为了代码美观而不要返回值。
leeqingshui
2022-06-08 21:12:30 +08:00
@nothingistrue 哈哈,老哥说的也有道理,我有时候写代码有点强迫症了~

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

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

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

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

© 2021 V2EX