MyBatis/Ibatis中#和$的总结

1.#号 解析时 会自动加引号 $不会 

例:id = #{id} 传入id= 5  sql 解析成 id = '5'  如是${id}  则是id =5

2.#号能很大程度防止sql注入 $不会

例:登录时 执行sql -select * from user where username = #{username} and password = #{pwd}  

如上sql 将# 换成$ pwd传值"' 1 ' or 1= 1"则 select * from user where username = abc and password = ' 1' or 1= 1 

因or 1=1 永远成立则前面不管传何值都可成功

3. $方式一般用于传入数据库对象 如表名

4.原则上能用#号 就别用$

你可能感兴趣的:(java,mybatis,oracle)