${}#{} 在 MyBatis 中都是用于 SQL 参数替换的符号,它们的区别主要体现在以下几个方面:

  1. 功能不同${} 是直接替换,而 #{}是预处理;
  2. 使用场景不同:普通参数使用 #{},如果传递的是 SQL 命令或 SQL 关键字,需要使用 ${},但在使用前一定要做好安全验证;
  3. 安全性不同:使用 ${} 存在安全问题,如 SQL 注入,而 #{} 则不存在安全问题。

所以,${}#{} 在 MyBatis 中都是用于 SQL 参数替换的符号,然而使用 ${} 可能存在安全问题,所以在能用 #{} 时,尽量使用 #{} 时,否则可以考虑在充分验证了参数安全之后使用 ${}