在ibatis中我們使用sqlmap進行sql查詢時需要引用引數,在引數引用中遇到的符號#和$之間的區分為,#可以進行與編譯,進行型別匹配,而$不進行資料型別匹配,
例如: select * from table where id = #id# ,其中如果欄位id為字元型,那麼#id#表示的就是'id'型別,如果id為整型,那麼#id#就是id型別。
select * from table where id = $id$ ,如果欄位id為整型,sql語句就不會出錯,但是如果欄位id為字元型,那麼sql語句應該寫成 select * from table where id = '$id$'
$ 的作用實際上是字串拼接,
select * from $tablename$
等效於
stringbuffer sb = new stringbuffer(256);
sb.tostring();
#用於變數替換
select * from table where id = #id#
等效於
preparestement = stmt.createpreparestement("select * from table where id = ?")
preparestement.setstring(1,'abc');
說道這裡, 總結一下, 什麼時候用$,什麼時候 用 #
對於變數部分, 應當使用#, 這樣可以有效的防止sql注入, 未來,# 都是用到了preparestement,這樣對效率也有一定的提公升
$只是簡單的字元拼接而已,對於非變數部分, 那只能使用$, 實際上, 在很多場合,$也是有很多實際意義的
例如 select * from $tablename$ 對於不同的表執行統一的查詢
update $tablename$ set status = #status# 每個實體一張表,改變不用實體的狀態
特別提醒一下, $只是字串拼接, 所以要特別小心sql注入問題。
SQL筆記 SqlMap中 與 的區別
在ibatis中使用sqlmap進行sql查詢時需要引用引數,在引數引用中遇到的符號 和 之間的區分為 可以進行與編譯,進行型別匹配,而 不進行資料型別匹配。例如 select from table where id id 其中如果欄位id為字元型,那麼 id 表示的就是 id 型別,如果id為整型...
sqlmap中 和 的區別
一.主要區別 a 解析sqlmap配置檔案時自動加單引號,即 a a 解析sqlmap配置檔案時不加單引號,即a 如果傳進來的條件需要order by的話,那一定用第二種 是把傳入的資料當作字串,如 field 傳入的是id,則sql語句生成是這樣,order by id 這當然會報錯 傳入的資料直...
PHP中 與and 與or的區別
在php中,與and都表示邏輯與,與or都表示邏輯或,並且它們都是短路運算子。而它們的區別在於運算的優先順序不同。t1 true and false t2 true false var dump t1,t2 在上面的 中 t1的值為true,t2的值為false。因為運算子and 的優先順序為 an...