Cause: com.microsoft.sqlserver.jdbc.SQLServerException: '@P0' 附近有语法错误。
解决方法:
insert into tableA (id,name,age) values #{msg},报错:Cause: com.microsoft.sqlserver.jdbc.SQLServerException: '@P0' 附近有语法错误,
后来查找资料,修改为insert into tableA (id,name,age) values ${msg},就插入数据库成功了。
mybatis中的#和$的区别
1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".
2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id.
3.#方式能够很大程度防止sql注入。
4.$方式无法防止Sql注入