新闻资讯

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻资讯列表

MyBatis中的#{}和${}有什么不同,mybatis 等于

发布时间:2024-04-07 17:35:36

MyBatis中的#{}和${}有甚么不同

#{}和${}是MyBatis中用来传递参数的两种方式。

  1. #{}:在SQL语句中使用#{}表示一个占位符,MyBatis会使用PreparedStatement来处理这个占位符,可以避免SQL注入攻击。#{}会将传入的参数依照JDBC规范进行处理,比如自动添加单引号,转义特殊字符等。

示例:

<select id="getUserById" resultType="User">
    SELECT * FROM user WHERE id = #{userId}
</select>
  1. ${}:在SQL语句中使用${}表示一个变量,MyBatis会将${}替换为实际的参数值,然后拼接到SQL语句中。使用${}需要注意SQL注入攻击的风险,由于参数值会直代替换到SQL语句中。

示例:

<select id="getUserByName" resultType="User">
    SELECT * FROM user WHERE name = '${userName}'
</select>

因此,推荐使用#{}的方式来传递参数,以避免SQL注入攻击。