教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

mybatis中#{}和${}的区别是什么?

更新时间:2023年05月10日09时49分 来源:大阳城app官网入口 浏览次数:

好口碑IT培训

  在MyBatis中,#{}和${}都是用于参数替换的占位符,但它们的行为有所不同。

  #{}会将参数作为预编译的参数进行处理,可以防止SQL注入攻击,并且能够自动将传入的参数进行类型转换。在SQL执行前,#{}中的占位符会被替换成问号,然后将参数值设置到PreparedStatement中。

  ${}则会将参数直接拼接到SQL语句中,因此容易受到SQL注入攻击,并且不能自动进行类型转换。在SQL执行前,${}中的占位符会被替换成实际的参数值。

  下面是一个简单的代码示例:





  在使用#{}的情况下,userId的值会被作为预编译的参数进行处理,可以防止SQL注入攻击,并且能够自动进行类型转换。而在使用${}的情况下,userName的值会被直接拼接到SQL语句中,容易受到SQL注入攻击,并且不能自动进行类型转换。因此,推荐使用#{}来替换参数。

0 分享到:
和我们在线交谈!
Baidu
sogou