Mybatis中#{}与${}的区别
2022-04-08 本文已影响0人
Java编程日记
1.#{}
1.MyBatis会把这个表达式使用?(占位符)替换,作为一个sql参数使用:推荐使用。比如:
定义SQL: SELECT * FROM user WHERE id = #{id}
最终SQL: SELECT * FROM user WHERE id = ?
2.使用#{}时,变量替换时会在对应的变量自动加上' ';
3.#{}可以防止sql注入;
2.${}
1.MyBatis会把这个表达式的值替换到sql中,作为sql的组成部分。把获取到值直接拼接到SQL中;
2.使用${}时,变量替换时不会在对应的变量加上' ';
3.${}可能会出现sql注入
3.{};
2.表名作为参数时,必须使用${},原因是#,如果是字符串,会自动加上单引号;
列如:SELECT * FROM 'user'
注意:一般能用 #{} 的地方尽量使用 #{} ,减少使用 ${} ,预防 SQL 注入;