MybatisPlus删除Long主键的坑

418 阅读1分钟

** 2019-12-09 13:13:07 **

今天得到反馈bug:班级excel批量导入之后,删除一个班级会导致班级批量删除...

有问题的代码

@DeleteMapping("/{id}")
@ApiOperation(value = "删除单个班级数据")
@LyraLog("删除班级")
public R<Object> deleteClassById(@PathVariable Long id) {
    if (schoolClassService.removeById(id)) {
        return R.ok("删除成功");
    }
    return R.failed("删除失败");
}

看到这段代码发现问题不止批量删除一个 emmmmm ,连数据判断都没... 然后我前后端都加了日志输出,加了个判断。排查问题。

2.0

写的时候发现一点问题:Long?行吧,那就Long把

最后写成。

@DeleteMapping("/{id}")
@ApiOperation(value = "删除单个班级数据")
@LyraLog("删除班级")
public R<Object> deleteClassById(@PathVariable Long id) {
    log.info(">>>>>>>>>>>>> 删除id : {} ", id);
    if (StringUtils.isEmpty(id.toString())) {
        return R.ok("删除失败,数据异常。");
    }
    if (schoolClassService.removeById(id)) {
        return R.ok("删除成功");
    }
    return R.failed("删除失败");
}

发现问题

1.导入数据!主键唯一,没有问题

2.前后端接收到的id对应上了,没有问题! 查看sql,吓一跳,删除了三条???

3.数据库查询该id

我发现导入数据中的id确实只有一个啊,但是我看到导入数据的id有三条比较近。

该不会就是这三条被删了把?我刷新数据库。

解决

把Long改为String即可。这应该算是MybatisPlus的bug???