目录
一、问题
二、问题解决
三、其他方法
一、问题
selectOne在查询多条数据时会报错,查询语句并不会加 limit 1。
One record is expected, but the query result is multiple records。
二、问题解决
在QueryWrapper上添加如下:
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(SysTenant.COL_USERNAME, username)
.or().eq(SysTenant.COL_PHONE, username)
.or().eq(SysTenant.COL_EMAIL, username)
.last("limit 1");
return mapper.selectOne(queryWrapper);
这样不但查询时会只查一条提升性能,selectOne也不再报错。
三、其他方法
//查询到多条数据的情况下只取第一条
FileDto fileDto = fileMapper.selectOne(queryWrapper);//这个报异常
FileDto fileDto1 = getOne(queryWrapper, false);//不抛出异常,从多个结果去一条并记录日志
产生原因:
使用selectOne方法查询数据库,在数据中发现多条数据,然后出现报错。
解决:替换IServer中的getOne方法,
getOne(queryWrapper,Boolean)
Boolean
true :抛出异常
false:不抛出异常,从多个结果中取一条并记录日志即可。
总结到此!