符号的取值来源和取值写法也是和#相同的。
如果我在页面输入指令名称,点击查询,分别调用上面两条sql语句去查询:
{}会被mybatis解析成:
然后再通过preparedstatement为这个问号赋值为“段子”。
${}会被mybatis解析成:
它会直接将“段子”这个变量拼在sql语句这个位置。{}的时候就应该考虑到两侧还要自己加上单引号,如:
所以我们一般不会使用{}呢?如果我们想再加一个表头排序的功能,就是点击不同的列,会产生不同的排序效果。比如点击指令名称这一列,就会按照指令名称排序,点击描述就按照描述来排序。因为根据sql的语法,order by后面的列名不应该被预编译的,因为你总不希望被mybatis解析变成order by ?,这样子就无法排序。应该是order by +直接传过来的字符串,所以用${}。
网友评论