詳解Mybatis中的 ${} 和 #{}區(qū)別與用法
Mybatis 的Mapper.xml語句中parameterType向SQL語句傳參有兩種方式:#{}和${}
我們經(jīng)常使用的是#{},一般解說是因為這種方式可以防止SQL注入,簡單的說#{}這種方式SQL語句是經(jīng)過預編譯的,它是把#{}中間的參數(shù)轉(zhuǎn)義成字符串,舉個例子:
select * from student where student_name = #{name}
預編譯后,會動態(tài)解析成一個參數(shù)標記符?:
select * from student where student_name = ?
而使用${}在動態(tài)解析時候,會傳入?yún)?shù)字符串
select * from student where student_name = ’lyrics’
總結(jié):
#{} 這種取值是編譯好SQL語句再取值${} 這種是取值以后再去編譯SQL語句
#{}方式能夠很大程度防止sql注入。 $方式無法防止Sql注入。 $方式一般用于傳入數(shù)據(jù)庫對象,例如傳入表名. 一般能用#的就別用$.舉個activiti工作流的例子:
select * from${prefix}ACT_HI_PROCINST where PROC_INST_ID_ =#{processInstanceId}
到此這篇關于詳解Mybatis中的 ${} 和 #{}區(qū)別與用法的文章就介紹到這了,更多相關mybatis ${} 和 #{}區(qū)別與用法內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!
相關文章:
1. 如何查看SQL SERVER的版本2. SqlServer服務中利用觸發(fā)器對指定賬戶進行登錄ip限制提升安全性操作3. SQL中使用ESCAPE定義轉(zhuǎn)義符詳解4. SQLSERVER 語句交錯引發(fā)的死鎖問題案例詳解5. centos 7下安裝mysql(MariaDB)的教程6. Mariadb數(shù)據(jù)庫主從復制同步配置過程實例7. 在windows環(huán)境下配置并隨意切換兩種mysql版本的方法8. SQLite學習手冊(SQLite在線備份)9. Mysql隔離性之Read View的用法說明10. Navicat for MySQL 11注冊碼激活碼匯總
