欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Mybatis中的 ${} 和 #{}區(qū)別與用法

 更新時(shí)間:2020年07月22日 10:23:03   作者:陳汐01  
這篇文章主要介紹了Mybatis中的 ${} 和 #{}區(qū)別與用法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

Mybatis 的Mapper.xml語句中parameterType向SQL語句傳參有兩種方式:#{}和${}

我們經(jīng)常使用的是#{},一般解說是因?yàn)檫@種方式可以防止SQL注入,簡(jiǎn)單的說#{}這種方式SQL語句是經(jīng)過預(yù)編譯的,它是把#{}中間的參數(shù)轉(zhuǎn)義成字符串,舉個(gè)例子:

select * from student where student_name = #{name} 

預(yù)編譯后,會(huì)動(dòng)態(tài)解析成一個(gè)參數(shù)標(biāo)記符?:

select * from student where student_name = ?

而使用${}在動(dòng)態(tài)解析時(shí)候,會(huì)傳入?yún)?shù)字符串

select * from student where student_name = 'lyrics'

總結(jié):

#{} 這種取值是編譯好SQL語句再取值
${} 這種是取值以后再去編譯SQL語句

  • #{}方式能夠很大程度防止sql注入。
  • $方式無法防止Sql注入。
  • $方式一般用于傳入數(shù)據(jù)庫(kù)對(duì)象,例如傳入表名.
  • 一般能用#的就別用$.

舉個(gè)activiti工作流的例子:

select * from${prefix}ACT_HI_PROCINST where PROC_INST_ID_ =#{processInstanceId}

到此這篇關(guān)于詳解Mybatis中的 ${} 和 #{}區(qū)別與用法的文章就介紹到這了,更多相關(guān)mybatis ${} 和 #{}區(qū)別與用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論