Mybatis中 和 的區別

2022-09-13 11:27:08 字數 621 閱讀 2609

最明顯的區別在於,#傳入的時候會為其加上雙引號,而$則是原樣傳值。

這是因為#{}使用的是預編譯語句, 採用的是佔位符的形式,所以會加上引號,所以其引數預設為字串,這樣可以防止sql注入。

而${}則是原樣傳輸,原來引數是什麼樣子就是什麼樣子。

但是要注意當parametertype為int的時候,也可以使用#{}。也要注意排序的時候,也就是用order by的時候要採用$來,因為這樣mysql才不會轉義字串。

select

name

from t_name

where add = #

這樣傳值就傳入字串,比如string add='上海',那麼其sql語句就是add="上海".

而$就用的就比較少了,一般用在order by和一些特殊情況,如下:

select name  from t_name

where add like concat('%','$','%')

order by $ $

1、#自動加上引號,可以防止sql注入;$原樣傳值,無法防止sql注入

2、常用#來傳值;order by、傳資料庫物件(表名)、like concat常用$

myBatis中 和 區別

1.將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。如 order by user id 如果傳入的值是111,那麼解析成sql時的值為order by 111 如果傳入的值是id,則解析成的sql為order by id 2.將傳入的資料直接顯示生成在sql中。如 order by u...

mybatis 中 和 區別

在使用mybatis 框架時 在xml的配置檔案中,通常是使用 來獲取數值的 如 select from t user inf where id 這時 如果你傳入的值為zhangsan 則會編譯成為 select from t user inf where id zhangsan mybatis 會...

Mybatis 中 和 區別

號與 區別 號表示引數,代表乙個字串。如 select a,b,c from table1 where id value 傳入引數後如 value 1 則可生成 select a,b,c from table1 where id 1 select a,b,c from table1 where ci...