mybatis mapper.xml中 #和$的使用

MyBatis/Ibatis中#和$的區別

1. #將傳入的數據都當成一個字符串,會對自動傳入的數據加一個雙引號。如:order by #user_id#,如果傳入的值是111,那麼解析成sql時的值爲order by "111", 如果傳入的值是id,則解析成的sql爲order by "id".


2. $將傳入的數據直接顯示生成在sql中。如:order by $user_id$,如果傳入的值是111,那麼解析成sql時的值爲order by user_id,  如果傳入的值是id,則解析成的sql爲order by id.

 

3. #方式能夠很大程度防止sql注入。

 

4.$方式無法防止Sql注入。

 

5.$方式一般用於傳入數據庫對象,例如傳入表名. 

 

6.一般能用#的就別用$. 


ps:在使用mybatis中還遇到<![CDATA[]]>的用法,在該符號內的語句,將不會被當成字符串來處理,而是直接當成sql語句,比如要執行一個存儲過程。

參考:http://blog.csdn.net/downkang/article/details/12499197/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章