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

总结到此!

相关推荐
默 语12 分钟前
Spring Boot 3.x升级踩坑记:到底值不值得升级?
hive·spring boot·后端
Java编程爱好者15 分钟前
JDK 21 中的虚拟线程:革新 Java 多线程
后端
TT哇19 分钟前
【RabbitMQ】@Autowired private RabbitTemplate rabbitTemplate;
java·分布式·rabbitmq
悟能不能悟19 分钟前
springboot controller返回的是HttpServletResponse成功返回excel文件流,失败就返回失败参数
spring boot·后端·excel
神奇小汤圆19 分钟前
面试官:如何在 Kafka 中实现延迟消息?
后端
李慕婉学姐23 分钟前
【开题答辩过程】以《智慧校园创新互助小程序的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·spring boot·小程序
undsky33 分钟前
【RuoYi-Eggjs】:多数据库与 MyBatis 特性详解
node.js·mybatis·egg.js
请告诉他1 小时前
【实战经验】Dell Inspiron 7560 升级 BIOS 支持 DDR4-2666 内存,解决 Spring Cloud 多模块开发内存瓶颈
后端·spring·spring cloud
悟能不能悟1 小时前
JAVA 对象转为二级制流,再转化为base64
java·开发语言