最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis中#號與美元符號的區(qū)別

 更新時(shí)間:2017年01月12日 14:08:12   作者:java1993666  
#{變量名}可以進(jìn)行預(yù)編譯、類型匹配等操作,#{變量名}會轉(zhuǎn)化為jdbc的類型。很多朋友不清楚在mybatis中#號與美元符號的不同,接下來通過本文給大家介紹兩者的區(qū)別,感興趣的朋友參考下吧

#{變量名}可以進(jìn)行預(yù)編譯、類型匹配等操作,#{變量名}會轉(zhuǎn)化為jdbc的類型。

select * from tablename where id = #{id}

假設(shè)id的值為12,其中如果數(shù)據(jù)庫字段id為字符型,那么#{id}表示的就是'12',如果id為整型,那么id就是12,并且MyBatis會將上面SQL語句轉(zhuǎn)化為jdbc的select * from tablename where id=?,把?參數(shù)設(shè)置為id的值。

${變量名}不進(jìn)行數(shù)據(jù)類型匹配,直接替換。

select * from tablename where id = ${id}

如果字段id為整型,sql語句就不會出錯(cuò),但是如果字段id為字符型, 那么sql語句應(yīng)該寫成

select * from table where id = '${id}'

#方式能夠很大程度防止sql注入。

$方式無法方式sql注入。

$方式一般用于傳入數(shù)據(jù)庫對象,例如傳入表名。

盡量多用#方式,少用$方式。

mybatis框架作為一款半自動化的持久層框架,其sql語句都要我們自己來手動編寫,這個(gè)時(shí)候當(dāng)然需要防止sql注入。其實(shí)Mybatis的sql是一個(gè)具有“輸入+輸出”功能,類似于函數(shù)的結(jié)構(gòu),如下:

select id="getBlogById" resultType="Blog" parameterType=”int”>
select id,title,author,content 
from blog where id=#{id} 
</select>

這里,parameterType標(biāo)示了輸入的參數(shù)類型,resultType標(biāo)示了輸出的參數(shù)類型?;貞?yīng)上文,如果我們想防止sql注入,理所當(dāng)然地要在輸入?yún)?shù)上下功夫。上面代碼中高亮部分即輸入?yún)?shù)在sql中拼接的部分,傳入?yún)?shù)后,打印出執(zhí)行的sql語句,會看到sql是這樣的:

select id,title,author,content from blog where id = ?

不管輸入什么參數(shù),打印出的sql都是這樣的。這是因?yàn)閙ybatis啟用了預(yù)編譯功能,在sql執(zhí)行前,會先將上面的sql發(fā)送給數(shù)據(jù)庫進(jìn)行編譯,執(zhí)行時(shí),直接使用編譯好的sql,替換占位符“?”就可以了。因?yàn)閟ql注入只能對編譯過程起作用,所以這樣的方式就很好地避免了sql注入的問題。

以上所述是小編給大家介紹的MyBatis中#號與美元符號的區(qū)別,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 如何基于SpringBoot部署外部Tomcat過程解析

    如何基于SpringBoot部署外部Tomcat過程解析

    這篇文章主要介紹了SpringBoot以war包形式部署到外部Tomcat過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • JDBC中PreparedStatement詳解以及應(yīng)用場景實(shí)例介紹

    JDBC中PreparedStatement詳解以及應(yīng)用場景實(shí)例介紹

    PreparedStatement對象代表的是一個(gè)預(yù)編譯的SQL語句,用它提供的setter方法可以傳入查詢的變量,這篇文章主要給大家介紹了關(guān)于JDBC中PreparedStatement詳解以及應(yīng)用場景實(shí)例介紹的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • Java1.7全網(wǎng)最深入HashMap源碼解析

    Java1.7全網(wǎng)最深入HashMap源碼解析

    HashMap 是一個(gè)散列表,它存儲的內(nèi)容是鍵值對(key-value)映射。HashMap 實(shí)現(xiàn)了 Map 接口,根據(jù)鍵的 HashCode 值存儲數(shù)據(jù),具有很快的訪問速度,最多允許一條記錄的鍵為 nul
    2021-11-11
  • Spring?Boot?優(yōu)雅停機(jī)原理詳解

    Spring?Boot?優(yōu)雅停機(jī)原理詳解

    這篇文章主要為大家介紹了Spring?Boot?優(yōu)雅停機(jī)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Java導(dǎo)出txt文件的方法

    Java導(dǎo)出txt文件的方法

    這篇文章主要介紹了Java導(dǎo)出txt文件的方法,實(shí)例分析了兩種java導(dǎo)出txt文本文件的使用技巧,需要的朋友可以參考下
    2015-05-05
  • Spring 環(huán)境下實(shí)現(xiàn)策略模式的示例

    Spring 環(huán)境下實(shí)現(xiàn)策略模式的示例

    這篇文章主要介紹了Spring 環(huán)境下實(shí)現(xiàn)策略模式的示例,幫助大家更好的理解和使用spring框架,感興趣的朋友可以了解下
    2020-10-10
  • 詳解SpringMVC和MyBatis框架開發(fā)環(huán)境搭建和簡單實(shí)用

    詳解SpringMVC和MyBatis框架開發(fā)環(huán)境搭建和簡單實(shí)用

    這篇文章主要介紹了詳解SpringMVC和MyBatis框架開發(fā)環(huán)境搭建和簡單實(shí)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java實(shí)現(xiàn)替換集合中的元素的方法詳解

    Java實(shí)現(xiàn)替換集合中的元素的方法詳解

    這篇文章主要為大家詳細(xì)介紹了Java中實(shí)現(xiàn)替換集合中的元素的常見方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • Java實(shí)現(xiàn)簡易提款機(jī)

    Java實(shí)現(xiàn)簡易提款機(jī)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡易提款機(jī),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • springMVC獲取請求參數(shù)的幾種方式匯總

    springMVC獲取請求參數(shù)的幾種方式匯總

    在日常使用SpringMVC進(jìn)行開發(fā)的時(shí)候,有可能遇到前端各種類型的請求參數(shù),這里做一次相對全面的總結(jié),下面這篇文章主要給大家介紹了關(guān)于springMVC獲取請求參數(shù)的幾種方式,需要的朋友可以參考下
    2022-04-04

最新評論

磐安县| 万年县| 滕州市| 读书| 云浮市| 阿瓦提县| 绩溪县| 平原县| 安溪县| 闽侯县| 二连浩特市| 平罗县| 兴海县| 南投市| 和田市| 红原县| 铜梁县| 凤山县| 任丘市| 墨江| 会理县| 诸城市| 太和县| 朝阳市| 金沙县| 治县。| 道真| 琼海市| 庄河市| 望谟县| 望奎县| 古丈县| 壶关县| 镇原县| 巢湖市| 绥阳县| 大连市| 青神县| 颍上县| 临武县| 武乡县|