当前位置:Gxlcms > 数据库问题 > Mybatis 中 sql 语句的占位符 #{} 和 ${}

Mybatis 中 sql 语句的占位符 #{} 和 ${}

时间:2021-07-01 10:21:17 帮助过:30人阅读

通过ID查询一个用户 --> <select id="findUserById" parameterType="Integer" resultType="com.msym.beans.User"> select * from user where id = #{v} </select> <!-- //根据用户名称模糊查询用户列表 #{} select * from user where id = ? 占位符 ? == ‘五‘ ${} select * from user where username like ‘%五%‘ 字符串拼接 --> <select id="findUserByUsername1" parameterType="String" resultType="com.msym.beans.User"> select * from user where username like ‘%${value}%‘ </select> <select id="findUserByUsername2" parameterType="String" resultType="com.msym.beans.User"> select * from user where username like "%"#{v}"%" </select>

  上面是 user 类对应的 user.xml 文件,用于编写 sql 语句,避免了硬编码。

  id 为 findUserByUsername1 的采用的是 ${} 占位符,id 为findUserByUsername2 采用的是 #{} 占位符,

  前者生成的 sql 为 select * from user where username like ‘%XXX%’;

  后者生成的 sql 语句是 select * from user where username like "%"‘XXX‘"%",(这样的格式我还没在 sql 中写过,但是的确能 run)

(XXX 是调用该查询是传入的参数)注意这两者的不同,前者不能防止 sql 注入,后者能防止。

Mybatis 中 sql 语句的占位符 #{} 和 ${}

标签:integer   不同   rom   jdb   type   bsp   占位符   sel   nbsp   

人气教程排行