ibatis #和$的區別
昨天一個項目中在寫ibatis中的sql語句時,order by #field#, 運行時總是報錯,后來上網查了查,才知道這里不該用#,而應該用$,隨即查了下#與$的區別.
總結如下:
1.#是把傳入的數據當作字符串,如#field#傳入的是id,則sql語句生成是這樣,order by "id",這當然會報錯..
2.$傳入的數據直接生成在sql里,如#field#傳入的是id,則sql語句生成是這樣,order by id, 這就對了.
3.#方式能夠很大程度防止sql注入.
4.$方式無法方式sql注入.
5.$方式一般用于傳入數據庫對象.例如傳入表名.
6.一般能用#的就別用$.
總結如下:
1.#是把傳入的數據當作字符串,如#field#傳入的是id,則sql語句生成是這樣,order by "id",這當然會報錯..
2.$傳入的數據直接生成在sql里,如#field#傳入的是id,則sql語句生成是這樣,order by id, 這就對了.
3.#方式能夠很大程度防止sql注入.
4.$方式無法方式sql注入.
5.$方式一般用于傳入數據庫對象.例如傳入表名.
6.一般能用#的就別用$.