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:不抛出异常,从多个结果中取一条并记录日志即可。

总结到此!

相关推荐
hay_lee几秒前
Spring AI实现对话聊天-流式输出
java·人工智能·ollama·spring ai
Hx_Ma166 分钟前
SpringBoot数据源自动管理
java·spring boot·spring
SunnyDays10117 分钟前
Java 高效实现 CSV 转 Excel
java·csv转excel
starfire_hit8 分钟前
JAVAWEB根据前台请求获取用户IP
java·服务器·网络
fengxin_rou10 分钟前
[Redis从零到精通|第四篇]:缓存穿透、雪崩、击穿
java·redis·缓存·mybatis·idea·多线程
像少年啦飞驰点、13 分钟前
从零开始学 RabbitMQ:小白也能懂的消息队列实战指南
java·spring boot·微服务·消息队列·rabbitmq·异步编程
lekami_兰15 分钟前
RabbitMQ 延迟队列实现指南:两种方案手把手教你搞定
后端·rabbitmq·延迟队列
宠友信息21 分钟前
2025社交+IM及时通讯社区APP仿小红书小程序
java·spring boot·小程序·uni-app·web app
java1234_小锋21 分钟前
Java高频面试题:Spring和SpringBoot的关系和区别?
java·spring boot·spring
风指引着方向23 分钟前
昇腾算子性能调优:ops-nn 中的内存布局与向量化技巧
java·大数据·人工智能