mybatis中order by排序無效問題

  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 111, 如果傳入的值是id,則解析成的sql爲order by id
  3. #方式能夠很大程度防止sql注入。
  4. $方式無法防止Sql注入。
  5. $方式一般用於傳入數據庫對象,例如傳入表名。
  6. 一般能用#的就別用$

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

所以order by 之後要使用$而非#

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