$ 符號一般用來當作佔位符,常使用linux指令碼的同學應該對此有更深的體會吧。既然是佔位符,當然就是被用來替換的。知道了這點就能很容易區分$和#,從而不容易記錯了。
比如說用#{},和 ${}傳參的區別,
使用#傳入引數是,sql語句解析是會加上"",比如 select * from table where name = # ,傳入的name為小李,那麼最後列印出來的就是
select * from table where name = 『小李』,就是會當成字串來解析,這樣相比於katex parse error: expected 'eof', got '#' at position 13: 的好處是比較明顯對的吧,#̲{}傳參能防止sql注入,如果…{},這種方式 那麼是會報錯的,
另外一種場景是,如果你要做動態的排序,比如 order by column,這個時候務必要用${},因為如果你使用了#{},那麼列印出來的將會是
select * from table order by 『name』 ,這樣是沒用,
mybatis中的#和$的區別
#將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。如:order by #user_id#,如果傳入的值是111,那麼解析成sql時的值為order by 「111」, 如果傳入的值是id,則解析成的sql為order by 「id」.
$將傳入的資料直接顯示生成在sql中。如:order by use
ri
duser_id
useri
d,如果傳入的值是111,那麼解析成sql時的值為order by user_id, 如果傳入的值是id,則解析成的sql為order by id.
#方式能夠很大程度防止sql注入。
4.$方式無法防止sql注入。
5.katex parse error: expected 'eof', got '#' at position 30: …例如傳入表名. 6.一般能用#̲的就別用.
mybatis排序時使用order by 動態引數時需要注意,用$而不是#
mybatis中$和#的區別簡單小結
和 equals 的區別是什麼?
string x string string y string string z newstring string system.out.println x y true system.out.println x z false system.out.println x.equals y true ...
和equals的區別是什麼
1 是關係運算子,equals是方法,結果都返回布林值 2 object類的和equals都是比較位址,作用相同 作用 jdk中的類一般已經重寫了equals 方法,比較的是內容 自定義的類如果沒有重寫equals方法,將呼叫父類的equals方法 可以根據自己的需求重寫equals方法,重寫equ...
和 equals 的區別是什麼
它的作用是判斷兩個物件的位址是不是相等。即,判斷兩個物件是不是同乙個物件。基本資料型別 比較的是值,引用資料型別 比較的是記憶體位址 equals 它的作用也是判斷兩個物件是否相等。但它一般有兩種使用情況 情況1 類沒有覆蓋 equals 方法。則通過 equals 比較該類的兩個物件時,等價於通過...