【MyBatis】#{} 和 ${} 区别


取值引用

#{}

自动给其添加引号


SELECT * FROM user WHERE username="Amy"

${}


SELECT * FROM user WHERE username=Amy

SQL 注入

#{}可以防止SQL注入而${}却不行


SELECT * FROM user WHERE username='' OR 1=1 OR '';

适用场景

#{} 和 ${} 均适用场景——模糊查询

${}——模糊查询


SELECT * FROM user WHERE username LIKE '%Amy%';

#{}——模糊查询


SELECT * FROM USER WHERE username LIKE CONCAT('%', 'Amy','%');

只能使用${}的场景——字段、表明(不需要加引号的)

使用#{}——错误


SELECT * FROM USER WHERE username LIKE '%Am%' ORDER BY 'sex' ASC;

改为${}——正确


SELECT * FROM USER WHERE username LIKE '%Am%' ORDER BY sex ASC;
SQL