#{ }和${ } 区别如下:
1、#{}是预编译的方式,可以防止sql注入,{ }中$用来拼接sql 语句,譬如:把数据库中的表名作为参数拼接在sql 语句中,必须使用 $$。
2、#不需要关注数据类型,mybatis实现自动数据类型转换;$不做数据类型转换,需要自行判断数据类型;
3、#可以防止sql注入;$不能防止sql注入;
4、如果 parameterType 只有一个参数,默认情况下,#{ }中可以写任意的名字;${ }中只能用value来接收。
#会根据变量的类型来进行替换
#{ } :#代表占位符,用来传递参数;
比如articleTitle的类型是string, 值是"标题"的时候
$articleTitle$ = 标题
#articleTitle# = '标题'
5、对于变量部分, 应当使用#, 这样可以有效的防止sql注入,具体执行时,# 都是用到了prepareStement,这样对效率也有一定的提升
#方式一般用于传入插入/更新的值或查询/删除的where条件
6、, 实际上, 在很多场合,$也是有很多实际意义的
$方式一般用于传入数据库对象.例如传入表名.