myBatis 使用Select top 动态参数出现“´@P0´ 附近有语法错误”的解决

myBatis 使用Select top 动态参数出现“´@P0´ 附近有语法错误”的解决

今天在使用myBatis使用 select top #{endPage} * from Users where id… 传递动态参数的时候会无法执行SQL语句,报错:’@P0’附近有语法错误。

最后寻得解决方法应该为:select top ${endPage} * from Users where id…

iBatis2对应语法是:#endPage 和 $endPage。

具体解释如下:(转自:wangkuoguang的“成长”空间)

1、#是把传入的数据当作字符串,如#field#传入的是id,则sql语句生成是这样,order by “id”,这当然会报错。
2、$传入的数据直接生成在sql里,如#field#传入的是id,则sql语句生成是这样,order by id, 这就对了。
3、#方式能够很大程度防止sql注入。
4、$方式无法防止sql注入。
5、$方式一般用于传入数据库对象,例如传入表名。
6、一般能用#的就别用$。

你可能感兴趣的:(myBatis,mybatis)