在mybatis中#和$的主要區別是:#傳入的參數在SQL中顯示為字串,#方式能夠很大程度防止sql注入;$傳入的參數在SqL中直接顯示為傳入的值,$方式無法防止Sql注入。
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中文網其他相關文章!