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

总结到此!

相关推荐
代码栈上的思考15 小时前
JVM中内存管理的策略
java·jvm
往事随风去15 小时前
虚拟线程在Spring Boot中的正确使用方式
spring boot
bcbnb15 小时前
IPA 一键加密工具实战,用多工具组合把加固做成一次性与可复用的交付能力(IPA 一键加密/Ipa Guard CLI/成品加固)
后端
YoungP15 小时前
【Effective Java 条目二】-- 当构造器参数较多时考虑使用生成器
java
麦兜*15 小时前
Spring Boot 应用 Docker 监控:Prometheus + Grafana 全方位监控
spring boot·后端·spring cloud·docker·prometheus
该用户已不存在15 小时前
Vibe Coding 入门指南:从想法到产品的完整路径
前端·人工智能·后端
野生技术架构师15 小时前
牛客网Java 高频面试题总结(2025最新版)
java·开发语言·面试
申阳15 小时前
Day 3:01. 基于Nuxt开发个人呢博客项目-初始化项目
前端·后端·程序员
铁锹少年15 小时前
当多进程遇上异步:一次 Celery 与 Async SQLAlchemy 的边界冲突
分布式·后端·python·架构·fastapi
纪莫15 小时前
技术面:SpringBoot(springboot的类加载和传统的双亲委派有什么区别、如何按顺序实例化Bean)
java·spring·java面试⑧股