mybatis中 关于#和$

it2023-02-17  366

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、$可以替换成表名或者列名

最新回复(0)