首頁 > 常見問題 > mybatis中#和$的差別是什麼

mybatis中#和$的差別是什麼

青灯夜游
發布: 2019-04-19 17:19:58
原創
54983 人瀏覽過

在mybatis中#和$的主要區別是:#傳入的參數在SQL中顯示為字串,#方式能夠很大程度防止sql注入;$傳入的參數在SqL中直接顯示為傳入的值,$方式無法防止Sql注入。

mybatis中#和$的差別是什麼

MyBatis 是一款優秀的持久層框架,它支援客製化 SQL、預存程序以及進階映射。 MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定參數以及取得結果集。 MyBatis 可以使用簡單的 XML 或註解來配置和映射原生信息,將介面和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java物件)映射成資料庫中的記錄。

動態 sql 是 mybatis 的主要特性之一,在 mapper 中定義的參數傳到 xml 中之後,在查詢之前 mybatis 會對其進行動態解析。 mybatis 為我們提供了兩種支援動態 sql 的語法:#{} 以及 ${};兩者都是動態的向sql語句中傳入所需的參數。

mybatis中#和$的差異是什麼

#1、傳入的參數在SQL中顯示不同

#傳入的參數在SQL中顯示為字串(當成一個字串),會對自動傳入的資料加上一個雙引號。

範例:使用下列SQL

select id,name,age from student where id =#{id}
登入後複製

當我們傳遞的參數id為"1" 時,上述sql 的解析為:

select id,name,age from student where id ="1"
登入後複製

$傳入的參數在SqL中直接顯示為傳入的值

範例:使用下列SQL

select id,name,age from student where id =${id}
登入後複製

當我們傳遞的參數id為"1" 時,上述sql 的解析為:

select id,name,age from student where id =1
登入後複製

2、#可以防止SQL注入的風險(語句的拼接);但$無法防止Sql注入。

3、$方式一般用於傳入資料庫對象,例如傳入表名。

4、大多數情況下還是常用#,一般能用#的就別用$;但有些情況下必須使用$,例:MyBatis排序時使用order by 動態參數時需要注意,用$而不是#。

以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !

以上是mybatis中#和$的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板