#
将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #{user_id},如果传入的值是111,那么解析成sql时的值为order by “111”。$
将传入的数据直接显示生成在SQL中。如:order by ${user_id},如果传入的值是111,那么解析成sql时的值为order by user_id。#
能够很大程度防止SQL注入。$
无法防止SQL注入。$
一般用于传入数据库对象。- 一般能用
#
就别用$
MyBatis排序时使用order by 动态参数时需要注意,用$而不是#
ORDER BY ${columnName}
这里MyBatis不会修改或转义字符串。
重要:接受从用户输出的内容并提供给语句中不变的字符串,这样做是不安全的。这会导致潜在的SQL注入攻击,因此你不应该允许用户输入这些字段,或者通常自行转义并检查。
MyBatis中#和$的区别
最新推荐文章于 2021-03-31 20:30:58 发布