今天在調一個接口的時候,sql和實現方法都寫好了,單元測試時報這個錯誤:
Parameter index out of range (5 > number of parameters, which is 4).
翻譯過來就是sql裏需要五個參數,但是隻傳了四個參數。納尼?明明傳了五個的,爲什麼少了一個呢?
仔細檢查了下sql語句,發現問題應該出在了like這個地方:name like "#{name}%"。
這個地方因爲被雙引號引起來,應該是被直接當成了一個字符串,mysql沒有識別出參數。其實應該這麼寫:
name like concat(#{name},"%")。把參數放到引號外面,這樣就識別出來了,完美解決!