mybatis中的字符串替换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis中的字符串替换相关的知识,希望对你有一定的参考价值。

参考技术A 默认情况下,使用 # 格式的语法会导致 MyBatis 创建 PreparedStatement 参数占位符并安全地设置参数(就像使用 ? 一样)。 这样做更安全,更迅速,通常也是首选做法,不过有时你就是想直接在 SQL 语句中插入一个不转义的字符串。 比如,像 ORDER BY,你可以这样来使用:
ORDER BY $columnName
这里 MyBatis 不会修改或转义字符串。

当 SQL 语句中的元数据(如表名或列名)是动态生成的时候,字符串替换将会非常有用。 举个例子,如果你想通过任何一列从表中 select 数据时,不需要像下面这样写:

可以只写这样一个方法:

其中 $column 会被直接替换,而 #value 会被使用 ? 预处理。 因此你就可以像下面这样来达到上述功能:

这个想法也同样适用于用来替换表名的情况。

提示 用这种方式接受用户的输入,并将其用于语句中的参数是不安全的,会导致潜在的 SQL 注入攻击,因此要么不允许用户输入这些字段,要么自行转义并检验。

以上是关于mybatis中的字符串替换的主要内容,如果未能解决你的问题,请参考以下文章

mybatis

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

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

Mybatis 的常见面试题

mybatis #{}和${}的区别是什么?

MyBatis中#{}和${}的区别