Mybatis 参数解析符${} 与 #{}区别

75 阅读1分钟

简介

Mybatis 中有两种可以接收参数的方式

  1. ${}
  2. #{}

区别

#{}: 解析为一个 JDBC 预编译语句(prepared statement)的参数标记符,一个 #{ } 被解析为一个参数占位符 ${}: 解析为一个占位符, 仅仅是内容替换

示例

<select id="selectByName" resultType="java.lang.String">
  select id,name from users where name = #{name}
</select>

查询结果正常显示

<select id="selectByName" resultType="java.lang.String">
  select id,name from users where name = ${name}
</select>

查询结果异常,显示类型匹配错误

  ERROR: operator does not exist: character varying = integer
  建议:No operator matches the given name and argument types. You might need to add explicit type casts.

转载需注明出处,抄袭必究