#{}和${}的区别?

mybatis-8d2d5dc1-8f92-456d-b858-7d3a7888f2eb.png

  • #{}是占位符,用于预编译处理;${}是拼接符,用于字符串替换,没有预编译处理。
  • 当处理#{}时,MyBatis会将#{}中的参数作为字符串传入,将SQL语句中的#{}替换为问号占位符,并使用PreparedStatement的set方法来设置参数的值。
  • 使用#{}可以有效防止SQL注入,提高系统的安全性;而${}无法防止SQL注入。
  • #{}中的变量替换是在DBMS中进行;${}中的变量替换是在DBMS之外进行。

标签: java, Java面试题, mybatis, Java问题合集, Java编程, Java问题精选, Java常见问题, MyBatis面试题