1、显示不同
1、 #{}(占位符)的取值方式会将传入的数据以字符串的形式接收并且替换成?,然后调用PreparedStatement来进行赋值)
2、${}
(拼接符)的取值是直接将传入的数据拼接在sql上(将传入的值替换${}
),常用于替换表名、列名、不同列排序等操作
#{}
select * from table where name = #{name}
编译之后转换为
select * from table where name =?
${}
select * from table where name = ${name}
编译之后转换为
select * from table where name =user
流程不同
- #{ }是会进行预编译处理的(PreparedStatement),所以可以防止sql注入
- ${}是先取值再进行编译(Statement)
3、安全性
- #{}可以有效防止sql注入,提高安全性
- ${}不可以防止sql注入