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

mybatis中${}和#{}的區(qū)別以及底層原理分析

 更新時間:2024年05月07日 10:30:48   作者:JinF~  
這篇文章主要介紹了mybatis中${}和#{}的區(qū)別以及底層原理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

${}和#{}的區(qū)別以及底層原理

${}

不會自動加 ' ',如果傳入?yún)?shù)為簡單類型,那么必須寫 ${value},如果是對象,寫的是${屬性名};

底層解析的時候只要sql語句包含 ${ } ,在創(chuàng)建cofigration對象的時候,這條sql就會被解析成動態(tài)類型的語句,底層不會把 ${ } 轉成 " ? "(不做處理),只會在使用Mapper接口代理對象進行數(shù)據(jù)操作的時候把#{ }轉成 " ? ",之后再調(diào)用JDBC進行賦值,把${ }轉成mapper接口的參數(shù)值,所以會存在SQL注入的問題

#{}

對于字符串會自動加 ' ',如果傳入?yún)?shù)為簡單類型,可以寫 ${任意值},如果是對象,寫的是${屬性名}

底層解析的時候如果sql語句只包含 #{ } ,這條sql就會被解析成靜態(tài)類型的語句,會把 #{ }轉成 " ? ",進行數(shù)據(jù)操作時調(diào)用JDBC進行賦值

#{}和${}取值符號

如圖,兩個方法的參數(shù)類型為簡單類型,簡單類型包括8大基本類型和String

  • 1. #{}取值符號會自動為String類型的參數(shù)加上‘’單引號
  • 2. ${}取值符號不會自動為String加上‘’單引號

當sql標簽的查詢代碼是 select * from t_user where username =  ‘lyx’;

這種情況,需要使用自動加上單引號的#{}:select * from t_user where username = #{username}

當查詢數(shù)據(jù)降序排序時:

UserDao接口如下:

select * from t_user order by 排序字段名 desc

UserMapper.xml文件如下:

 

調(diào)用

  • queryUserOrderByColumn(String column)運行結果

      

  • queryUserOrderByColumn2(String column)運行結果2

  • 看數(shù)據(jù)庫中的數(shù)據(jù),說明方法1沒有成功降序排序

所以對于動態(tài)排序的sql語句,要用${},而不用#{}

對于排序正確 的代碼是

select * from t_user order by username desc

如果使用#{},會自動為String類型添加單引號,變成

select * from t_user order by 'username' desc

所以查不到數(shù)據(jù)

來看使用${}的第二種情況:模糊查詢

sql語句應該是,

LIKE_ (單個任意字符)
列名 LIKE ‘張_'
LIKE % (任意長度的任意字符)
列名 LIKE ‘張%'

顯然,使用 ${},不自動添加單引號才是正確的

調(diào)用運行

運行結果:

總結

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

相關文章

  • 使用SpringBoot中web項目推薦目錄結構的問題

    使用SpringBoot中web項目推薦目錄結構的問題

    這篇文章主要介紹了SpringBoot中web項目推薦目錄結構的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • java類訪問權限與成員訪問權限解析

    java類訪問權限與成員訪問權限解析

    這篇文章主要針對java類訪問權限與成員訪問權限進行解析,對類與成員訪問權限進行驗證,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Java使用新浪微博API通過賬號密碼方式登陸微博的實例

    Java使用新浪微博API通過賬號密碼方式登陸微博的實例

    這篇文章主要介紹了Java使用新浪微博API通過賬號密碼方式登陸微博的實例,一般來說第三方App都是采用OAuth授權認證然后跳轉之類的方法,而本文所介紹的賬號方式則更具有自由度,需要的朋友可以參考下
    2016-02-02
  • InputStreamReader 和FileReader的區(qū)別及InputStream和Reader的區(qū)別

    InputStreamReader 和FileReader的區(qū)別及InputStream和Reader的區(qū)別

    這篇文章主要介紹了InputStreamReader 和FileReader的區(qū)別及InputStream和Reader的區(qū)別的相關資料,需要的朋友可以參考下
    2015-12-12
  • SpringCloud_Eureka服務注冊與發(fā)現(xiàn)基礎及構建步驟

    SpringCloud_Eureka服務注冊與發(fā)現(xiàn)基礎及構建步驟

    Eureka服務注冊中心,主要用于提供服務注冊功能,當微服務啟動時,會將自己的服務注冊到Eureka Server,這篇文章主要介紹了SpringCloud中Eureka的配置及詳細使用,需要的朋友可以參考下
    2023-01-01
  • Springboot搭建JVM監(jiān)控(Springboot + Prometheus + Grafana)

    Springboot搭建JVM監(jiān)控(Springboot + Prometheus +&n

    在應用開發(fā)時,監(jiān)控報警必不可少,本文主要介紹了Springboot搭建JVM監(jiān)控(Springboot + Prometheus + Grafana),具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • java仿枚舉實例

    java仿枚舉實例

    下面小編就為大家?guī)硪黄猨ava仿枚舉實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Java設計模式之橋接模式詳解

    Java設計模式之橋接模式詳解

    橋接模式(Bridge Pattern)是一種結構型設計模式,用于將抽象部分和實現(xiàn)部分`分離開來,從而使它們可以獨立地進行變化,本節(jié)給大家講一下設計模式中的橋接模式,并結合實際業(yè)務場景給大家講解如何使用,需要的朋友可以參考下
    2023-07-07
  • Java微服務的打包問題解決

    Java微服務的打包問題解決

    本文主要介紹了Java微服務的打包問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • java實現(xiàn)文件夾上傳功能實例代碼(SpringBoot框架)

    java實現(xiàn)文件夾上傳功能實例代碼(SpringBoot框架)

    在web項目中上傳文件夾現(xiàn)在已經(jīng)成為了一個主流的需求,下面這篇文章主要給大家介紹了關于java實現(xiàn)文件夾上傳功能(springBoot框架)的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04

最新評論

安达市| 尼勒克县| 淅川县| 房产| 丽水市| 漾濞| 嘉黎县| 西青区| 河源市| 台东市| 秦皇岛市| 贵南县| 华阴市| 河东区| 新野县| 苏州市| 定安县| 长宁区| 炉霍县| 湟源县| 江华| 吉林市| 梁山县| 偏关县| 唐山市| 左权县| 齐河县| 景洪市| 韩城市| 三穗县| 桂阳县| 新宁县| 资中县| 黄冈市| 云阳县| 大悟县| 张家口市| 金阳县| 山阴县| 林周县| 定兴县|