您好,登錄后才能下訂單哦!
這篇文章主要介紹了MyBatis中的#{}和${}有什么區別,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
在MyBatis 的映射配置文件中,動態傳遞參數有兩種方式:
1、#{} 占位符
2、${} 拼接符
區別1
#{} 為參數占位符 ?,即sql 預編譯
${} 為字符串替換,即 sql 拼接
區別2、
#{}:動態解析 -> 預編譯 -> 執行
${}:動態解析 -> 編譯 -> 執行
區別 3、
#{} 的變量替換是在DBMS 中
${} 的變量替換是在 DBMS 外
區別 4、
變量替換后,#{} 對應的變量自動加上單引號''
變量替換后,${} 對應的變量不會加上單引號 ''
區別 5、
#{} 能防止sql 注入
${} 不能防止sql 注入
#{}:select * from t_user where uid=#{uid} ${}:select * from t_user where uid= '${uid}'
#{}:select * from t_user where uid= ? ${}:select * from t_user where uid= '1'
#{}:select * from t_user where uid= '1' ${}:select * from t_user where uid= '1'
單個參數的情形
#{}
${}
多個參數的情形 #{}
${}
1、不論是單個參數,還是多個參數,一律都建議使用注解@Param("")
2、 能用 #{} 的地方就用 #{},不用或少用${}
3、表名作參數時,必須用${}
。如:select * from ${tableName}
4、order by 時,必須用 ${}
。如:select * from t_user order by ${columnName}
5、表名處用#{}會直接報錯;order by后面用#{}排序不生效
6、使用 ${} 時,要注意何時加或不加單引號,即${} 和 '${}'
。一般字段類型為char或者varchar時需要加單引號
感謝你能夠認真閱讀完這篇文章,希望小編分享的“MyBatis中的#{}和${}有什么區別”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。