mybatis ${}与#{}的差别在哪里?
原来在mybatis中如果以${}形式声明为SQL传递参数,mybatis将不会进行参数预处理,会直接动态拼接SQL语句,此时就会存在被注入的风险,所以在使用mybatis作为持久框架时应尽量避免采用${}的形式进行参数传递,如果无法避免(有些SQL如like、in、order by等,程序员可能依旧会选择${}的方式传参),那就需要对传入参数自行进行转义过滤
使用原生的jdbc时, 要注意使用它的 PreparedStatement ,不要用Statement
如果使用mybatis框架, 注意使用#{}, 切记, 使用${}的时候一定要注意安全性问题(sql注入) ,使用${}时,不会对sql进行预处理, 也就会造成sql注入