1.#将传进的参数都作为字符串处理(????)。
2.$ 适合 传入表名 或者 动态 sql 语句 或者 order by $column$,这里如果传入动态sql 语句,那么需要设置remapResults = "true",因为动态sql语句,每次返回的列数可能不一样。这样每次查询都会从数据库中重新查询一次,这样有点消耗性能。
3.$ 不能防止sql 注入,因此需要对用户输入的数据进行处理。
4.#能有效的防止sql注入,使用?代表传入的参数,对参数进行了预编译。在执行时,对其进行了优化处理当然包括了过滤敏感字符。在因此能使用#的地方最好使用#。
例:
select * from $a$; 如果传进参数a="t_users",那么sql语句就是select * from t_users;
select * from #a#; 如果传进参数a="t_users",那么sql语句就是select * from “t_users”; 显然会报错
正确的使用# 和 $ 非常重要。