ibatis中的order by 引數配置問題

2021-09-01 05:01:38 字數 861 閱讀 3354

昨天乙個專案中在寫ibatis中的sql語句時,order by #field#, 執行時總是報錯,後來上網查了查,才知道這裡不該用#,而應該用$,隨即查了下#與$的區別.

總結如下:

1.#是把傳入的資料當作字串,如#field#傳入的是id,則sql語句生成是這樣,order by "id",這當然會報錯..

2.$傳入的資料直接生成在sql裡,如$field$傳入的是id,則sql語句生成是這樣,order by id, 這就對了. 如:

<

isnotnull 

property

="orderby"

>

order by $orderby$ 

]]>

<

isnotnull 

property

="descorasc"

>

$descorasc$ 

]]>

isnotnull

>

isnotnull

>

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

4.$方式一般用於傳入資料庫物件.例如傳入表名.

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

遇到的問題是order by後面的字段是動態的,有時候用字段1,有時候用字段2

sqlmap的配置為:

obder by $mytag1$

obder by $欄位2$

為什麼用$$來包含order by的引數,因為$$內的value不會被解釋成'value',而是直接原樣翻譯。

總結:如果要考慮資料型別,用#;若是只考慮字元,則用$.

ibatis動態欄位order by排序

ibatis中要增加乙個排序功能 按照慣性思維增加了這樣的 order by ordercolumn 執行起來不符合預期 檢查了生成了原始語句,發現組裝成的sql變成了 order by name 在ordercolumn引數前後加上了引號,所以會不成功 最終解決方法如下 order by orde...

十一 Sql server中order by的用法

在上面幾節中我們學習了一些條件語句,但不知對這些選擇的資料如何排序,如果要對資料排序,那該怎麼辦呢?這時就可以用到 order by 指令了。先看下它的語法 select 欄位名 from 名 where 條件 order by 欄位名 asc,desc 假如有乙個教師資訊表 而我們想要按年齡由小大...

Ibatis中的 和 區別

在ibatis中我們使用sqlmap進行sql查詢時需要引用引數,在引數引用中遇到的符號 和 之間的區分為,可以進行與編譯,進行型別匹配,而 不進行資料型別匹配,例如 select from table where id id 其中如果欄位id為字元型,那麼 id 表示的就是 id 型別,如果id為...