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、一般能用#的就别用$。
最后寻得解决方法应该为: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、一般能用#的就别用$。
相关文章推荐
- myBatis 使用Select top 动态参数出现“′@P0′ 附近有语法错误”的解决
- 【问题解决】MyBatis分页查询SQL Server2008时出现'@P0' 附近有语法错误
- asp.net中ListView控件动态绑定数据源后,使用DataPager出现错误的原因及解决办法
- 使用OleDbCommandBuilder时出现“Insert into 语句的语法错误”的解决方法
- mybatis 动态SQL '@P0' 附近有语法错误
- 使用OleDbCommandBuilder时出现“Insert into 语句的语法错误”的解决方法
- 使用OleDbCommandBuilder时出现“Insert into 语句的语法错误”的解决方法
- SQLserver UNPIVOT函数 行列转化出现 [Err] 42000 - [SQL Server]关键字 'FOR' 附近有语法错误。解决办法
- 引用天下会"使用OleDbCommandBuilder时出现“Insert into 语句的语法错误”的解决方法"
- 使用OleDbCommandBuilder时出现“Insert into 语句的语法错误”的解决方法
- 调用opencv时,使用Egien工具出现“error C2061: 语法错误: 标识符“Matrix””和“error C2653: “Eigen”:不是类或命名空间名称”该如何解决?
- 使用OleDbCommandBuilder时出现“Insert into 语句的语法错误”的解决方法
- 使用OleDbCommandBuilder时出现“Insert into 语句的语法错误”的解决方法
- 使用OleDbCommandBuilder时出现“Insert into 语句的语法错误”的解决方法
- 使用OleDbCommandBuilder时出现“Insert into 语句的语法错误”的解决方法
- mybatis中出现“@P0' 附近有语法错误。
- mybatis使用sqlserver分页报'@P0' 附近有语法错误。
- 使用OleDbCommandBuilder时出现“Update语句的语法错误”的解决方法
- 使用OleDbCommandBuilder时出现“Insert into 语句的语法错误”的解决方法
- 使用OleDbCommandBuilder时出现“Insert into 语句的语法错误”的解决方法(转)