1.错误场景. ( /* */ 注释 )
IDEA中 ==>> 标签内 ==>> Ctrl + Alt + / 注释.
<select xxxx >
select id,name
from user
/*limit #{startIndex,jdbcType=INTEGER},#{numPerPage,jdbcType=INTEGER}*/
</select>
2.异常信息: ( 注释也会被执行 )
执行打印出来的SQL语句如下: select id,name from user /* limit ?,? */
Caused by: java.sql.SQLException: Parameter index out of range (4 > number of parameters, which is 3).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:897)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:886)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
at com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3327)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3312)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3351)
at com.mysql.jdbc.PreparedStatement.setNull(PreparedStatement.java:3390)
3.异常分析. ( 使用/* */注释 )
①SQL语句中会拼接上注释的内容.
select * from user /* 注释内容 */
②注释中有#{},mybatis仍旧会把#{ }算成一个带注入的参数.
4.解决办法. ( 可以写注释. )
规范写法:
<!-- 注释内容 -->
故: xml文件中的注释不能是 /**/,要不然就会报出上面的错误信息,只能以<!开头,和 > 结尾