美文网首页
Mybatis——Mapper.xml中的“#{}”与“${}”

Mybatis——Mapper.xml中的“#{}”与“${}”

作者: Kevin_Tsang | 来源:发表于2018-07-28 22:38 被阅读0次

    Mybatis在真正操作数据库前要完成2个步骤:
    1、预编译SQL语句(以提高语句利用率,减少资源消耗)
    2、将SQL传输给DBMS(数据库管理系统,真正的数据库操作者)执行。

    配置文件中的SQL语句使用#{value}代表参数则语句在预编译时由占位符代替(?),后由DBMS转换为带单引号的参数;而用${value}代表参数则其在预编译阶段就已被编译成SQL的一部分,且不带引号,这会引发所谓的“SQL注入”的问题。

    那么想要预编译有效,就要尽量使用#{value}代表参数。
    而在不需要参数成为一个引用的情况下不得不使用${value},如:
    1、Like子句中的参数不额外写%,而是将%固定写在配置文件中

    select * from user where username like '%${value}%'

    2、字段名、表名作为参数时,其不能加引号,因为MySQL不会将带引号的字符串视为表结构的名称。

    相关文章

      网友评论

          本文标题:Mybatis——Mapper.xml中的“#{}”与“${}”

          本文链接:https://www.haomeiwen.com/subject/jiyamftx.html