使用动态SQl出错 Expected one result (or null) to be returned by selectOne(), but found: 24

博客讲述了MyBatis使用中遇到的错误,即期望selectOne()返回一个结果或null,却找到多条数据。经检查SQL语句无误,错误原因是SQL返回多条数据时,mapper中不能用类返回,应改为List集合,更改后错误解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

出现以下错误,多次检查sql语句并没有错,错误的中文翻译是:期望由selectOne()返回一个结果(或null),但是找到:24
在这里插入图片描述
我的mapper代码如下:

//更改前
public CarInfo findCarInfo(@Param("car_id")String carid,@Param("car_num")String carnum);

对应的sql语句;

	<!-- 动态sql -->
	<select id="findCarInfo" resultType="CarInfo">
		select * from car_info where 1=1
		<choose>
			<when test="car_id != null and car_num != ''">
				and car_id = #{car_id}
			</when>
			<when test="car_num != null and car_num != ''">
				and car_num like concat('%',#{car_num},'%')
			</when>
			<otherwise>
				and car_id is not null
			</otherwise>
		</choose>
	</select>

错误的原因是当sql返回了多条数据,mapper中,返回就不能使用类CatInfo了,这里更改为List集合,更改后mapper代码如下:

// 更改后
public List<CarInfo> findCarInfo(@Param("car_id")String carid,@Param("car_num")String carnum);

以上错误就成功解决了,希望能帮到大家,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值