勾选多条数据,批量修改数据中的某一字段时,点击提交,页面出现以下图中所示报错信息,批量修改数据失败。nested exception is org.apache.ibatis.exceptions.T

项目场景:

背景:

勾选多条数据,批量修改数据中的某一字段时,点击提交,页面出现以下图中所示报错信息,批量修改数据失败。

报错信息如下图所示:
在这里插入图片描述


问题描述

遇到的问题:

[ code: 500 ] 保存失败!nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2: http://localhost:8090/device/batchUpdate

在这里插入图片描述

在这里插入图片描述


原因分析:

分析问题:

在使用 MyBatis 进行数据库查询时,有时会遇到错误信息 “nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result”,该错误表示查询结果不符合预期,返回了多个结果,但是代码期望只有一个结果。

这个错误通常是因为 MyBatis 的 selectOne() 方法期望只返回一个结果,但实际上返回了两个以上的结果。

解决方法通常包括:

  1. 确保你的 SQL 查询只返回一个结果,可以通过添加限制条件或者调整查询逻辑来实现。
  2. 如果你确定查询应该返回多个结果,可以使用 selectList() 方法来替代 selectOne() 方法。
  3. 检查你的 SQL 语句是否正确,可能存在逻辑错误导致返回了多个结果。
  4. 如果你确实需要返回多个结果,但是又想使用 selectOne() 方法,可以通过调整 MyBatis 的配置来设置 useGeneratedKeys="true" 或者 keyProperty="id",确保只返回一个结果。

如果使用了 MyBatis 的对象-关系映射(ORM)功能,确保实体类和数据库表之间的映射关系正确。
检查实体类的注解或 XML 配置,确保与数据库表的字段对应关系正确。
确认实体类中的属性和数据库表中的字段匹配,不要出现多个属性映射到同一个字段的情况。


解决方案:

解决方案:

检查发现,导致本次错误出现的原因是,调用的 生成唯一编码的 生成规则,表中查询到两个,导致了该错误的发生。
在这里插入图片描述

本次问题就解决啦~!!!!

注:
解决这个异常的方法,我们主要需要检查 SQL 查询语句 和数据表中的数据是否符合要求, 并进行必要的更改即可。
如果查询结果必须唯一,则可以使用 selectOne() 方法, 否则可以采用 selectList() 方法来返回多个结果。
若在MyBatis 映射文件 中也可以使用 Limit 限制查询结果的数量, 以确保查询结果的唯一性。

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值