当参数使用 #{xxx} 时,参数不参与到编译过程,编译后用 ? 代替响应的位置,可以预防sql注入。另外,在多次执行同一个sql语句时,也能提高执行速度。
但是使用 ${xxx} 时,参数会参与到编译过程,会引起sql注入,要手工做好过滤工作。
#{xxx} 原理:JDBC PreparedStatement
当参数使用 #{xxx} 时,参数不参与到编译过程,编译后用 ? 代替响应的位置,可以预防sql注入。另外,在多次执行同一个sql语句时,也能提高执行速度。
但是使用 ${xxx} 时,参数会参与到编译过程,会引起sql注入,要手工做好过滤工作。
#{xxx} 原理:JDBC PreparedStatement