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

Mybatis中${param}與#{param}的區(qū)別說明

 更新時間:2022年06月22日 10:42:58   作者:回首一輩子  
這篇文章主要介紹了Mybatis中${param}與#{param}的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

${param}與#{param}的區(qū)別

${param}表達式主要用戶獲取配置文件數(shù)據(jù),DAO接口中的參數(shù)信息,當(dāng) $ 出現(xiàn)在映射文件的 SQl 語句中時創(chuàng)建的不是預(yù)編譯的 SQL ,而是字符串的拼接有可能會導(dǎo)致 SQL 注入的問題,所以一般使用 $ 接收 DAO 參數(shù)時,這些參數(shù)一般是字段名,表名等.例如 order by {column}

#{param} 表達式主要是用戶獲取 DAO 中的參數(shù)數(shù)據(jù),在映射文件的SQL 語句中出現(xiàn) #{} 表達式,底層會創(chuàng)建預(yù)編譯的 SQL .性能會相對較好

${} 獲取 DAO 參數(shù)數(shù)據(jù)時,參數(shù)必須使用 @param 注解進行修飾

#{} 獲取 DAO 參數(shù)數(shù)據(jù)時,假如參數(shù)個數(shù)多于一個,可有選擇的使用@param

Mybatis中#{}與${}使用總結(jié)

#{ }與${ }的區(qū)別

1、#{ }將傳入的數(shù)據(jù)都當(dāng)成一個字符串,會對自動傳入的數(shù)據(jù)加一個雙引號。 如:

delete from user where name= #{name}

實際相當(dāng)于一個占位符:

delete from user where name= ?

如果傳入的值是123,那么解析成sql時的值為 delete from user where name= 123, 如果傳入的值是字符串 Rose,則解析成的sql為delete from user where name= 'Rose'

2、${ }將傳入的數(shù)據(jù)直接顯示生成在sql中,即原樣拼接。對于

delete from user where name= ${name}

如果傳入的值int類型的123,那么解析成sql時的值為

delete from user where name= 123

如果傳入的值是字符串Rose,則解析成的sql為

delete from user where name= Rose

這樣就是錯誤的,必須將原來的語句改為

delete from user where name= '${name}'

3、#方式能夠防止sql注入;$方式無法防止Sql注入

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

默認情況下,使用#{}格式的語法會導(dǎo)致MyBatis創(chuàng)建預(yù)處理語句屬性并以它為背景設(shè)置安全的值。這樣做很安全,很迅速也是首選做法,有時只是想直接在SQL語句中插入一個不改變的字符串,可以使用${ }。

使用總結(jié)

1、#{ }:多用于傳遞查詢的參數(shù);一般用在用戶輸入值的地方,在sql中:字段 比較符號(=、>、<、!=、<>) #{用戶輸入的值};

  • 如果傳遞參數(shù)是基本類型(非字符類型),獲取參數(shù)是原樣獲取, 如果是字符串,#{}獲取時會自動給加一個引號。
  • 對于基本類型和String類型可以在#{ }內(nèi)任意填寫,一半填寫對應(yīng)值。

2、${ }:一般用于傳入數(shù)據(jù)庫對象,例如傳入表名,如:$(表名);一般用于order by的后面,如:order by $(字段);表名作為變量時,必須使用 ${ };用在我們能夠確定值的地方,也就是我們程序員自己賦值的地方;

  • 如果傳遞是基本類型的闡述,int,String等等。${}只能寫value,如${value}

3、如果傳遞參數(shù)是對象:#{}和${}都是ognl表達式來獲取 (對象導(dǎo)航語言 屬性.屬性.屬性)

  • 如:
<update id="updateUserByID" parameterType="domain.User">
?update user set username=#{username},sex=#{sex},birthday=#{birthday} where id=#{id}
</update>
  • #{}內(nèi)的內(nèi)容必須是User對應(yīng)的屬性值。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java 自動安裝校驗TLS/SSL證書

    Java 自動安裝校驗TLS/SSL證書

    這篇文章主要介紹了Java 自動安裝校驗TLS/SSL證書的示例,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-10-10
  • 23種設(shè)計模式(10)java組合模式

    23種設(shè)計模式(10)java組合模式

    這篇文章主要為大家詳細介紹了23種設(shè)計模式之java組合模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • SPFA算法的實現(xiàn)原理及其應(yīng)用詳解

    SPFA算法的實現(xiàn)原理及其應(yīng)用詳解

    SPFA算法,全稱為Shortest?Path?Faster?Algorithm,是求解單源最短路徑問題的一種常用算法,本文就來聊聊它的實現(xiàn)原理與簡單應(yīng)用吧
    2023-05-05
  • Java使用modbus4j實現(xiàn)modbus?tcp通訊

    Java使用modbus4j實現(xiàn)modbus?tcp通訊

    Modbus是由Modicon(現(xiàn)為施耐德電氣公司的一個品牌)在1979年發(fā)明的,是全球第一個真正用于工業(yè)現(xiàn)場的總線協(xié)議,本文主要介紹了java如何使用modbus4j實現(xiàn)modbus?tcp通訊,感興趣的可以了解下
    2023-12-12
  • 在Java中如何避免創(chuàng)建不必要的對象

    在Java中如何避免創(chuàng)建不必要的對象

    作為Java開發(fā)者,我們每天創(chuàng)建很多對象,但如何才能避免創(chuàng)建不必要的對象呢?這需要我們好好學(xué)習(xí),這篇文章主要給大家介紹了關(guān)于在Java中如何避免創(chuàng)建不必要對象的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • 解決@Value注解不能注入static修飾的屬性問題

    解決@Value注解不能注入static修飾的屬性問題

    這篇文章主要介紹了解決@Value注解不能注入static修飾的屬性問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • SpringBoot服務(wù)設(shè)置禁止server.point端口的使用

    SpringBoot服務(wù)設(shè)置禁止server.point端口的使用

    本文主要介紹了SpringBoot服務(wù)設(shè)置禁止server.point端口的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • Java利用Redis實現(xiàn)高并發(fā)計數(shù)器的示例代碼

    Java利用Redis實現(xiàn)高并發(fā)計數(shù)器的示例代碼

    這篇文章主要介紹了Java利用Redis實現(xiàn)高并發(fā)計數(shù)器的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 基于JAVA中使用Axis發(fā)布/調(diào)用Webservice的方法詳解

    基于JAVA中使用Axis發(fā)布/調(diào)用Webservice的方法詳解

    如果初識axis發(fā)布/調(diào)用WS,建議先讀上面的參考文件,本文對于發(fā)布/調(diào)用WS的主要步驟只是簡單文字描述,沒有它寫的詳盡
    2013-05-05
  • Java 比較字符串實例詳解

    Java 比較字符串實例詳解

    這篇文章主要介紹了 Java 比較字符串實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06

最新評論