order by 字段,在用動態sql時會出現問題,排序無效,而且在日志里查詢不到,不能發現這個錯誤。
通常,咱們的動態sql一般都會用#代替$,因為#可以防止sql注入問題。
但是在order by的字段里,如果繼續用#,那么排序會無效。這個時候只能用$代替#。
#將傳入的數據都當成一個字符串,會對自動傳入的數據加一個雙引號。如:order by #{user_id},如果傳入的值是111,那么解析成sql時的值為order by "111", 如果傳入的值是id,則解析成的sql為order by "id"。$將傳入的數據直接顯示生成在sql中。如:order by ${user_id},如果傳入的值是111,那么解析成sql時的值為order by 111, 如果傳入的值是id,則解析成的sql為order by id。#方式能夠很大程度防止sql注入。$方式無法防止Sql注入。$方式一般用於傳入數據庫對象,例如傳入表名。- 一般能用
#的就別用$。
