您的位置:首页 > 运维架构

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

2014-08-11 17:17 645 查看
今天在使用myBatis使用 select top #{num} * from tableName... 传递动态参数的时候会无法执行SQL语句,报错:'@P0'附近有语法错误。

最后寻得解决方法应该为:select top ${num} * from tableName...

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

具体解释如下:

1、#是把传入的数据当作字符串,如#field#传入的是id,则sql语句生成是这样,order by "id",这当然会报错。

2、$传入的数据直接生成在sql里,如#field#传入的是id,则sql语句生成是这样,order by id, 这就对了。

3、#方式能够很大程度防止sql注入。

4、$方式无法方式sql注入。

5、$方式一般用于传入数据库对象,例如传入表名。

6、一般能用#的就别用$。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐