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.{}表达式的应用场景 1.使用order by 时,必须使用{};

2.表名作为参数时,必须使用${},原因是#,如果是字符串,会自动加上单引号;

列如:SELECT * FROM 'user'

注意:一般能用 #{} 的地方尽量使用 #{} ,减少使用 ${} ,预防 SQL 注入;

上一篇 下一篇

猜你喜欢

热点阅读