在使用mybatis解析xml進行排序的時候,遇見排序無效的問題!
#將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。如:order by #,如果傳入的值是111,那麼解析成sql時的值為order by 「111」, 如果傳入的值是id,則解析成的sql為order by 「id」。
$將傳入的資料直接顯示生成在sql中。如:order by $,如果傳入的值是111,那麼解析成sql時的值為order by 111, 如果傳入的值是id,則解析成的sql為order by id。
order by 字段,在用動態sql時會出現問題,排序無效,而且在日誌裡查詢不到,不能發現這個錯誤。
通常,咱們的動態sql一般都會用#代替$,因為#可以防止sql注入問題。
但是在order by的字段裡,如果繼續用#,那麼排序會無效。這個時候只能用$代替#。
#
將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。如:order by #
,如果傳入的值是111,那麼解析成sql時的值為order by "111"
, 如果傳入的值是id,則解析成的sql為order by "id"
。
$
將傳入的資料直接顯示生成在sql中。如:order by $
,如果傳入的值是111,那麼解析成sql時的值為order by 111
, 如果傳入的值是id,則解析成的sql為order by id
。
#
方式能夠很大程度防止sql注入。
$
方式無法防止sql注入。
$
方式一般用於傳入資料庫物件,例如傳入表名。
一般能用#
的就別用$
。
mybatis 動態排序
mybatis動態排序目前知道的方式有兩種 1.通過pagehelper com.github.pagehelper pagehelper 版本5.1.4 stringbuffer orderby new stringbuffer 欄位名稱 排序方式 pagehelper.startpage vo....
mybatis 動態sql詳解
內容 轉到原網頁insert into t blog title,content,owner values select from t blog where id update t blog set title content owner where id select from t blog se...
mybatis入門 動態sql
mybatis核心就是對sql語句進行靈活操作,通過表示式進行判斷,對sql進行靈活拼接 組裝。現有需求如下 需要查詢使用者,輸入的是使用者類,如果使用者的性別類不為空,則將性別作為查詢條件之一,如果使用者的姓名不為空,則將使用者姓名作為查詢條件之一。如果使用者兩個屬性都為空,則查詢所有使用者。將上...