1. 程式人生 > >mybatis動態sql排序無效

mybatis動態sql排序無效

ati 例如 str 但是 sql ron 們的 問題 生成

order by 字段,在用動態sql時會出現問題,排序無效,而且在日誌裏查詢不到,不能發現這個錯誤。

通常,咱們的動態sql一般都會用#代替$,因為#可以防止sql註入問題。

但是在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. 一般能用#的就別用$

mybatis動態sql排序無效