sql $和# 的区别以及作用

#{}

mysql 中 #{}表示占位符,相当与jdbc中的?,可以很大程度地防止注入攻击(可百度百科sql注入攻击)

后面的花括号{}的值直接替换?并转化字符串,举例:

select * from user where id = #{id},id = 1

sql语句就变为

select * from user where id = "1"

${}

${} 就是将值直接传进{}里面,还举个例子

select * from user where id = #{id},id = 1

sql语句就变为

select * from user where id = 1

如果 id = id

select * from user where id = id

sql语句就变为

这样有一个风险就是 传 1 or 1 = 1,这样sql就变成

select * from user where id = 1 or 1 = 1 恒成立

以上是他们的作用,这样也可以看出他们的使用场景

#{}是传递值,基础类型或实体类的属性,${}就可以传递sql语句

你可能感兴趣的:(mysql,sql,数据库)