美文网首页
mybatis中#{}和${}区别

mybatis中#{}和${}区别

作者: Depro | 来源:发表于2021-08-07 11:20 被阅读0次
  1. #{},预编译,是占位符,在mybatis处理sql的时候,#{}换成了?,调用PrepareStatement来赋值,参数当作一个字符串传入,给了问号,这个参数是用单引号括起来的。
  2. ${}, 是字符串接连,在mybatis处理sql时,${}直接换成了会传入的参数,调用 statement处理;有sql注入的风险,但是如果本身 自己就是想完全替换接连参数,就可以这样用了; mybatis处理之后 的sql是不自动带单引号的,如果需要,可以自己在参数里带上
    3.e.g. 常用 查用户名和密码
传入的参数: name = "zhangsan"  pwd = "123 or 1=1"

select * from t_user  where name = #{name} and pwd = #{pwd}
mybatis处理之后
select * from t_user where name = 'zhangsan' and pwd= '123 or 1=1'

select * from t_user where name = ${name} and pwd = ${pwd}
mybatis处理之后
select * from t_user where name = zhangsan and pwd= 123 or 1=1
这里如果想把zhangsan带单引号,传入参数name = "'zhangsan'"
select * from t_user where name = 'zhangsan' and pwd = 123 or 1 = 1

相关文章

网友评论

      本文标题:mybatis中#{}和${}区别

      本文链接:https://www.haomeiwen.com/subject/oaygvltx.html