今天在调一个接口的时候,sql和实现方法都写好了,单元测试时报这个错误:
Parameter index out of range (5 > number of parameters, which is 4).
翻译过来就是sql里需要五个参数,但是只传了四个参数。纳尼?明明传了五个的,为什么少了一个呢?
仔细检查了下sql语句,发现问题应该出在了like这个地方:name like "#{name}%"。
这个地方因为被双引号引起来,应该是被直接当成了一个字符串,mysql没有识别出参数。其实应该这么写:
name like concat(#{name},"%")。把参数放到引号外面,这样就识别出来了,完美解决!

本文详细解析了在接口调用中遇到的SQL参数数量不匹配的错误,具体表现为需要5个参数但仅传递了4个的情况。通过深入分析SQL语句,发现like条件中的参数未被正确识别,提出了使用concat函数将参数与字符串拼接的解决方案。

1059

被折叠的 条评论
为什么被折叠?



