近期项目中页面展示出现问题,数据库为空的字段在页面显示却有值。
经过排查后发现问题出现在mybatisPlus的selectOne上。
项目使用的mybatisPlus的版本是2.2.0,查看了selectOne的底层代码,如下:
public T selectOne(Wrapper<T> wrapper) {
return SqlHelper.getObject(this.baseMapper.selectList(wrapper));
}
也就是selectOne实际上用的也是selectList来进行查询的,按照平常自己写的selectOne的的逻辑,按照条件查询查不到就返回null或者查到多个就抛出异常。
但是使用mybatisPlus直接默认返回了list的第一个。需要因此需要代码逻辑,如果返回多个就直接返回null,不然则直接返回list的第一个