这里主要的区别是:
#{}的内容会被解释成字符串,也就是说,会被引擎自动给加上一个双引号,而${},会把引用的数据
直接就显示在sql中,这样的话,就会有sql注入的风险.
而#{}因为会把数据处理成字符串,所以避免了sql注入的风险,所以我们在使用的时候,大部分时间会使用#{}.
SELECT id,name FROM test WHERE id =#{id};
//当我们传递的参数id为 "1" 时,上述 SQL 的解析为:
SELECT id,name FROM test WHERE id ="1";
SELECT id,name FROM test WHERE id =${id};
//当我们传递的参数id为 "1" 时,上述 sql 的解析为:
SELECT id,name FROM test WHERE id =1;
但是对于一些对象来说,比如表的名字,等,可以测试一下还是用${}