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

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

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

#{變量名}可以進行預編譯、類型匹配等操作,#{變量名}會轉化為jdbc的類型。

select * from tablename where id = #{id}

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

${變量名}不進行數據類型匹配,直接替換。

select * from tablename where id = ${id}

如果字段id為整型,sql語句就不會出錯,但是如果字段id為字符型, 那么sql語句應該寫成

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

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

$方式無法方式sql注入。

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

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

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

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

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

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

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

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

相關文章

  • SpringBoot前后端分離實現(xiàn)驗證碼操作

    SpringBoot前后端分離實現(xiàn)驗證碼操作

    驗證碼的功能是防止非法用戶惡意去訪問登錄接口而設置的一個功能,今天我們就來看看在前后端分離的項目中,SpringBoot是如何提供服務的
    2022-05-05
  • java實現(xiàn)水果超市管理系統(tǒng)

    java實現(xiàn)水果超市管理系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現(xiàn)水果超市管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 一文帶你深入理解Java?AbstractQueuedSynchronizer

    一文帶你深入理解Java?AbstractQueuedSynchronizer

    在并發(fā)編程中,鎖是一種保證線程安全的方式,這篇文章主要為大家介紹了AbstractQueuedSynchronizer(AQS)的數據結構及實現(xiàn)原理,感興趣的小伙伴可以了解一下
    2023-07-07
  • SpringBoot詳細講解視圖整合引擎thymeleaf

    SpringBoot詳細講解視圖整合引擎thymeleaf

    這篇文章主要分享了Spring Boot整合使用Thymeleaf,Thymeleaf是新一代的Java模板引擎,類似于Velocity、FreeMarker等傳統(tǒng)引擎,關于其更多相關內容,需要的小伙伴可以參考一下
    2022-06-06
  • 深入了解Spring控制反轉IOC原理

    深入了解Spring控制反轉IOC原理

    IOC-Inversion?of?Control,即控制反轉。它不是什么技術,而是一種設計思想。這篇文章將為大家介紹一下Spring控制反轉IOC的原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • RocketMQ中的通信模塊詳解

    RocketMQ中的通信模塊詳解

    這篇文章主要介紹了RocketMQ中的通信模塊詳解,RocketMQ消息隊列集群主要包括NameServer、Broker(Master/Slave)、Producer、Consumer4個角色,本文我們簡單來講解一下,需要的朋友可以參考下
    2024-01-01
  • 詳解設計模式在Spring中的應用(9種)

    詳解設計模式在Spring中的應用(9種)

    這篇文章主要介紹了詳解設計模式在Spring中的應用(9種),詳細的介紹了這9種模式在項目中的應用,具有一定的參考價值,感興趣的可以了解一下
    2019-04-04
  • SpringCloud微服務多應用腳手架的搭建與部署方式

    SpringCloud微服務多應用腳手架的搭建與部署方式

    這篇文章主要介紹了SpringCloud微服務多應用腳手架的搭建與部署方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java編程中的構造函數詳細介紹

    Java編程中的構造函數詳細介紹

    這篇文章主要介紹了Java編程中的構造函數詳細介紹,介紹了其概念,格式,與其他函數的區(qū)別,作用等相關內容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Java多線程中不同條件下編寫生產消費者模型方法介紹

    Java多線程中不同條件下編寫生產消費者模型方法介紹

    這篇文章主要介紹了Java多線程中不同條件下編寫生產消費者模型方法介紹,介紹了生產消費者模型,然后分享了相關代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11

最新評論