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