对数据库 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);
}
1
alen0206 2022-06-08 11:13:34 +08:00
可以返回新增或更新后的实体 也可以返回 true or false (不过一般新增出错 都会抛出异常 给前端提示了)
|
2
Huelse 2022-06-08 11:20:47 +08:00
默认返回 1 或 0 ,或返回影响的 ID
|
3
kaers 2022-06-08 11:40:07 +08:00
除非前端需要用到这个 count. 一般都不返回的, 前端只需要知道执行结果是成功还是失败就行了
|
4
leeqingshui OP @alen0206 嗯嗯,这个问题应该是主要兼容前端去考虑,返回新增或更新后的实体这个在部分场景前端确实需要,比如前端准备新增或更新数据前端会需要一个对话框表单,若点击保存调后端接口后弹框不关闭(此对话框又属于另一个对话框里的一部分),那么确实需要返回实体给前端;
true or false 前端一般是直接判断后端状态码是否等于 200 ,不会进一步去看这个字段值,一般新增出错 都会抛出异常 给前端提示了,似乎没多大意义。 nice~ |
5
nothingistrue 2022-06-08 14:02:09 +08:00 1
全 ORM 的惯例是:
保存(新增或修改)返回修改后的实体; 单独的新增方法返回新增后的实体或者主键; 单独的增量修改方法返回修改后的实体或者主键; 删除返回删除前的重新查询的实体; 批量 /动态修改,及批量 /动态删除,返回实际受影响的行数。 惯例只是惯例,是否遵循取决于自身得需要。但是,绝对不能为了代码美观而不要返回值。 |
6
leeqingshui OP @nothingistrue 哈哈,老哥说的也有道理,我有时候写代码有点强迫症了~
|