報錯內容:
java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2)
調試半天,網上查了半天都是# 、$ 用法出錯,一次次的對比,一個個字找,發現,用法根本沒問題,突然。。。看到了注釋中的
#{executorId},想想,也許是這個的原因呢?然后就給注釋刪了,結果發現就是注釋的鍋:
這樣,mybatis仍舊會把#{}算成一個帶注入的參數,二SQL認出了這個-- 的注釋
-- AND (dept.id = #{executorId} OR dept.parentId = #{executorId} OR parentId in ( SELECT id from user_department
-- WHERE user_department.id = #{executorId} OR user_department.parentId = #{executorId} ))
結論:在mybatis 的sql里不是不能寫注釋,而是注釋不能有#{},mybatis仍舊會把#{}算成一個帶注入的參數
參考:https://blog.csdn.net/peaceForEveryOne/article/details/82803357