问题描述:
接口返回给前端的list中有空数据,导致前端无法显示
原因分析:
排查发现是由于数据回滚后,设置了该行数据的is_delete字段(由0改成了1),调用mybatisplus自带的this.baseMapper.selectById(id);方法,查询返回结果为null(即使该id存在),这是由于mybatisplus的selectById方法使用了逻辑查询,当数据库表字段上添加了@TableLogic注解时,在查找的时候会自动带上where is_delete=0
@ApiModelProperty(value = "删除标识")
@Default
@TableLogic(delval = "1", value = "0")
private Integer isDelete = 0;
参考:官网-逻辑删除
解决方案:
将查询的结果加入list时进行非空判断
if (ObjectUtil.isNotEmpty(empMerits)&& !ids.contains((Long.parseLong(id)))){ list.add(empMerits); }