詳解Mybatis中的 ${} 和 #{}區(qū)別與用法
Mybatis 的Mapper.xml語句中parameterType向SQL語句傳參有兩種方式:#{}和${}
我們經(jīng)常使用的是#{},一般解說是因為這種方式可以防止SQL注入,簡單的說#{}這種方式SQL語句是經(jīng)過預(yù)編譯的,它是把#{}中間的參數(shù)轉(zhuǎn)義成字符串,舉個例子:
select * from student where student_name = #{name}
預(yù)編譯后,會動態(tài)解析成一個參數(shù)標(biāo)記符?:
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}
到此這篇關(guān)于詳解Mybatis中的 ${} 和 #{}區(qū)別與用法的文章就介紹到這了,更多相關(guān)mybatis ${} 和 #{}區(qū)別與用法內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 數(shù)據(jù)庫Oracle9i的企業(yè)管理器簡介2. 用shell抽取,更新db2的數(shù)據(jù)3. 恢復(fù)從 Access 2000、 Access 2002 或 Access 2003 中數(shù)據(jù)庫刪除表的方法4. Delphi中的Access技巧集5. DB2 XML 全文搜索之為文本搜索做準(zhǔn)備6. Microsoft Office Access修改代碼字體大小的方法7. Windows下不能啟動mysql服務(wù)--錯誤總結(jié)8. mysql數(shù)據(jù)存放的位置在哪9. Microsoft Office Access設(shè)置默認(rèn)日期為當(dāng)前日期的方法10. SQLServer的內(nèi)存管理架構(gòu)詳解
