#{}和${}

作者: 不知名的蛋挞 | 来源:发表于2018-10-10 09:25 被阅读7次

    和#是一样的,都是写在sql语句中称为sql语句的一部分,而且符号的取值来源和取值写法也是和#相同的。

    如果我在页面输入指令名称,点击查询,分别调用上面两条sql语句去查询:

    {}会被mybatis解析成:

    然后再通过preparedstatement为这个问号赋值为“段子”。

    ${}会被mybatis解析成:

    它会直接将“段子”这个变量拼在sql语句这个位置。{}是没有预编译效果的,它和Java代码拼一个字符串的效果是一样的。而且这条语句是错误的,执行不起来,因为不是预编译效果,如果想让这条sql语句正常的执行,在一开始写这个{}的时候就应该考虑到两侧还要自己加上单引号,如:

    所以我们一般不会使用{}。那什么时候会用到{}呢?如果我们想再加一个表头排序的功能,就是点击不同的列,会产生不同的排序效果。比如点击指令名称这一列,就会按照指令名称排序,点击描述就按照描述来排序。因为根据sql的语法,order by后面的列名不应该被预编译的,因为你总不希望被mybatis解析变成order by ?,这样子就无法排序。应该是order by +直接传过来的字符串,所以用${}。

    相关文章

      网友评论

          本文标题:#{}和${}

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