SpringBoot MybatisPlus selectOne的坑

目录

一、问题

二、问题解决

三、其他方法


一、问题

selectOne在查询多条数据时会报错,查询语句并不会加 limit 1。

复制代码
One record is expected, but the query result is multiple records。

二、问题解决

在QueryWrapper上添加如下:

java 复制代码
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也不再报错。

三、其他方法

java 复制代码
 //查询到多条数据的情况下只取第一条
 FileDto fileDto = fileMapper.selectOne(queryWrapper);//这个报异常
   
 
 FileDto fileDto1 = getOne(queryWrapper, false);//不抛出异常,从多个结果去一条并记录日志

产生原因:

使用selectOne方法查询数据库,在数据中发现多条数据,然后出现报错。

解决:替换IServer中的getOne方法,

getOne(queryWrapper,Boolean)

Boolean

true :抛出异常

false:不抛出异常,从多个结果中取一条并记录日志即可。

总结到此!

相关推荐
这里有鱼汤3 分钟前
80%新手炒股都在误用技术指标?一文揭秘正确分类与实战组合
后端·python
挖坑的张师傅10 分钟前
基于 Rust 的高性能 S3 over NFS 系统设计
后端·架构
澡点睡觉25 分钟前
【golang长途旅行第32站】反射
开发语言·后端·golang
用户61204149221326 分钟前
C语言做的排队叫号系统
c语言·后端·敏捷开发
IT_陈寒1 小时前
3年Java开发经验总结:提升50%编码效率的7个核心技巧与实战案例
前端·人工智能·后端
pengzhuofan1 小时前
Java设计模式-代理模式
java·设计模式·代理模式
现在,此刻1 小时前
from中烟科技&&翼支付 面试题1
java·面试
Victor3562 小时前
Redis(26)Redis的AOF持久化的优点和缺点是什么?
后端
Victor3562 小时前
Redis(27)如何对Redis进行备份和恢复?
后端
君不见,青丝成雪2 小时前
清分系统在电商中的一些案例
java·大数据·系统架构