天天看点

Mybatis中$与#的区别mybatis中#{}和${}的区别

mybatis本身的说明:

Mybatis中$与#的区别mybatis中#{}和${}的区别
Mybatis中$与#的区别mybatis中#{}和${}的区别

从上文可以看出:

1. 使用#{}格式的语法在mybatis中使用preparement语句来安全的设置值,执行sql类似下面的:

这样做的好处是:更安全,更迅速,通常也是首选做法。

2. 不过有时你只是想直接在 sql 语句中插入一个不改变的字符串。比如,像 order by,你可以这样来使用:

此时mybatis 不会修改或转义字符串。

这种方式类似于:

这种方式的缺点是: 以这种方式接受从用户输出的内容并提供给语句中不变的字符串是不安全的,会导致潜在的 sql 注入攻击,因此要么不允许用户输入这些字段,要么自行转义并检验。

参考文献:

【1】http://mybatis.github.io/mybatis-3/sqlmap-xml.html

【2】https://mybatis.github.io/mybatis-3/zh/sqlmap-xml.html