温馨提示×

MyBatis中的#{}和${}有哪些区别

小亿
84
2024-05-08 13:11:51
栏目: 编程语言

  1. #{}用于预编译,将参数以安全方式传递给SQL语句,可以防止SQL注入攻击。而${}是直接将参数值拼接到SQL语句中,存在SQL注入的风险。

  2. #{}是用来替代传入参数的位置,MyBatis会将#{}替换为一个问号(?)占位符,然后将参数值作为预编译参数传递给数据库。而${}是直接将参数的值替换到SQL语句中。

  3. #{}只能用于传递参数值,例如WHERE语句中的条件值,而${}可以用于动态拼接SQL语句的其他部分,例如表名、列名等。

  4. #{}会自动对参数值进行转义处理,而${}不会进行转义处理。

总的来说,推荐在编写SQL语句时使用#{}来传递参数,以确保安全性和预编译的效果。而${}适用于动态拼接SQL语句的其他部分。

0