Mybatis中 和 的區別,你知道嗎?

2022-10-10 08:18:13 字數 1349 閱讀 6880

在使用mybatis框架開發專案編寫sql語句的時候,經常需要用到變數替換值,那麼用來替換變數值的操作經常用到$和#這兩個符號,同樣在一些j**a面試中也經常被問到它們的區別。那麼它們在使用上面有什麼區別呢?下面根據使用情況分析總結,兩者的區別。

1、#和$兩者含義不同

#會把傳入的資料都當成乙個字串來處理,會在傳入的資料上面加乙個雙引號來處理。

而$則是把傳入的資料直接顯示在sql語句中,不會新增雙引號。

比如:

其中如果傳入的username型別為字元型,比如輸入zhangsan,那麼username=##表示的就是username=」zhangsan」,如果傳入的username型別為數值型別,比如輸入11,那麼username=##表示的就是username=」11」。

其中如果傳入的username型別為整型型別,那麼在執行sql語句時就不會出錯,但是如果傳入的username型別為字串型,比如輸入zhangsan,那麼username=$就會變成username=zhangsan,執行會報錯,所以sql語句必須寫成下面這樣。

2、兩者的實現方式不同

(1)$作用相等於是字串拼接

select username,pass from t_login where username=後面,拼接在一起。

(2)#作用相當於變數值替換

相當於使用preparedstement介面來對##來進行賦值操作。

3、#和$使用場景不同

(1)在sql語句中,如果要接收傳遞過來的變數的值的話,必須使用#。因為使用#是通過preparedstement介面來操作,可以防止sql注入,並且在多次執行sql語句時可以提高效率。

(2)$只是簡單的字串拼接而已,所以要特別小心sql注入問題。對於sql語句中非變數部分,那就可以使用$,比如$方式一般用於傳入資料庫物件(如傳入表名)。

例如:select * from $$ 對於不同的表執行統一的查詢操作時,就可以使用$來完成。

(3)如果在sql語句中能同時使用#和$的時候,最好使用#。

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...