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

853
2024/5/10 13:11:51
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

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

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

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

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

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

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: MyBatis使用HashMap进行批量操作方法