mybatis SQLSERVER '@P1' 附近有语法错误

数据库用SQLSERVER2000,写分页sql,使用mybatis动态传入参数,报如下错误
bad SQL grammar []; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 第 1 行: '@P1' 附近有语法错误。
对SQL出问题的地方做了简化,实际要负责很多,简化后问题SQL语句如下:
SELECT TOP #{num} FROM employee
通过google找到解决办法,只要改成
SELECT TOP ${num} FROM employee  

总结原因如下:
#{var}传入参数会被装饰成 "var"可以防止sql注入问题
比如num=10,上面sql语句就会被解释成SELECT TOP "10" FROM employee 这样就会报错
${var}传入参数会直接显示 会有发生sql注入问题
同样num=10,上面sql语句就会被解释成SELECT TOP 10 FROM employee 这样就没错 
使用#{var},尽量少用${var}          

猜你喜欢

转载自hquxiezk.iteye.com/blog/1506339