报错内容:
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