select id,name,email,age from student where name=#{name} or age=#{age}; #的结果是: select id,name,email,age from student where name=? or age=?;
select id,name,email,age from student where name=#{name} or age=#{age}; $的结果是: select id,name,email,age from student where name=1001 or age=20; 使用的Statement对象执行SQL,效率比PreparedStatement低
$ : 可以替换表名或列名,你能确定数据是安全的,可以用$
两者的区别: 1、#使用?在sql语句中是占位的,使用PreparedStatement执行sql,效率高 2、#能够避免sql注入,更安全 3、$不使用占位符,是字符串连接形式,使用Statement执行sql,效率低
4、$有sql注入的风险,缺乏安全性
5、$可以替换成表名或者列名