MyBatis中 #{} 和 ${} 的区别详解

395 阅读1分钟
  1. #{}: 采用预编译方式,可以防止SQL注入,${} 将传入的数据都当成一个字符串,简单的理解就是给你传入的数据自动的加上一对引号;
  2. ${}: 采用直接赋值方式,无法阻止SQL注入攻击;
  3. 在大多数情况下,我们都是采用 #{} 读取参数内容.但是在一些特殊的情况下,我们还是需要使用 ${} 读取参数的。如:表名、排序字段。简单来说,在 JDBC 不支持使用占位符的地方,都可以使用${}。