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

Mybatis-plus foreach拼接字符串查詢無數(shù)據(jù)返回問題

 更新時間:2022年03月22日 15:59:04   作者:輕點 別打臉  
這篇文章主要介紹了Mybatis-plus foreach拼接字符串查詢無數(shù)據(jù)返回問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

foreach拼接字符串查詢無數(shù)據(jù)返回

Mybatis-plus xml使用foreach遍歷查詢條件,填充IN函數(shù)時,查詢不到數(shù)據(jù)

入?yún)?List<String>[A,B,C,D,E,F]

?WHERE sku_code IN
?<foreach collection="listHistoryBrowseDateVO.list" item="skuCode" index="index" open="(" close=")"
? ? ? ? ? separator=",">
? ? ?#{skuCode}
?</foreach>

以上代碼在迭代器中,給IN函數(shù)賦值的時候,使用的是#{ }占位符號,最后解析出的sql是:

WHERE sku_code IN (A,B,C,D,E,F)不符合IN函數(shù)填充查詢格式。

兩種解決方式

1、將入?yún)⑻幚頌椋?String ‘A’,‘B’,‘C’,‘D’,‘E’,‘F’,然后使用占位符 WHERE sku_code IN (#{}) 直接填充

2、入?yún)⑻幚頌椋篖ist [ ‘A’,‘B’,‘C’,‘D’,‘E’,‘F’],使用迭代器+拼接符${}

入?yún)?List<String>   [  'A','B','C','D','E','F']

?WHERE sku_code IN
?<foreach collection="listHistoryBrowseDateVO.list" item="skuCode" index="index" open="(" close=")"
? ? ? ? ? separator=",">
? ? ?${skuCode}
?</foreach>

Mybatis-plus #{} 占位符,${}拼接符,在sql解析的時是有區(qū)別的

精講#{}和${}的區(qū)別是什么?

經(jīng)常碰到這樣的面試題目:#{}和${}的區(qū)別是什么?

網(wǎng)上的答案是:

#{}是預(yù)編譯處理,${}是字符串替換。mybatis在處理#{}時,會將sql中的#{}替換為?號,調(diào)用PreparedStatement的set方法來賦值;mybatis在處理${}時,就是把${}替換成變量的值。使用#{}可以有效的防止SQL注入,提高系統(tǒng)安全性。

對于這個問題我感覺要抓住兩點

(1)$符號一般用來當作占位符,常使用Linux腳本的人應(yīng)該對此有更深的體會吧。既然是占位符,當然就是被用來替換的。知道了這點就能很容易區(qū)分$和#,從而不容易記錯了。

(2)預(yù)編譯的機制。預(yù)編譯是提前對SQL語句進行預(yù)編譯,而其后注入的參數(shù)將不會再進行SQL編譯。我們知道,SQL注入是發(fā)生在編譯的過程中,因為惡意注入了某些特殊字符,最后被編譯成了惡意的執(zhí)行操作。而預(yù)編譯機制則可以很好的防止SQL注入。

最后想說的是,對于mybatis以及sql而言,每一個考點背后都是有一個深刻的思想存在的,應(yīng)該好好的體會。這樣才能真正的做到技術(shù)提升,成為技術(shù)大牛。

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

相關(guān)文章

  • 詳解SpringBoot啟動類的掃描注解的用法及沖突原則

    詳解SpringBoot啟動類的掃描注解的用法及沖突原則

    這篇文章主要介紹了詳解SpringBoot啟動類的掃描注解的用法及沖突原則,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • IntelliJ IDEA修改內(nèi)存大小,使得idea運行更流暢

    IntelliJ IDEA修改內(nèi)存大小,使得idea運行更流暢

    今天小編就為大家分享一篇關(guān)于IntelliJ IDEA修改內(nèi)存大小,使得idea運行更流暢的文章,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • JAVA超級簡單的爬蟲實例講解

    JAVA超級簡單的爬蟲實例講解

    下面小編就為大家?guī)硪黄狫AVA超級簡單的爬蟲實例講解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • java GUI編程之paint繪制操作示例

    java GUI編程之paint繪制操作示例

    這篇文章主要介紹了java GUI編程之paint繪制操作,結(jié)合實例形式詳細分析了java GUI編程paint繪制相關(guān)操作技巧與使用注意事項,需要的朋友可以參考下
    2020-01-01
  • 比較Java數(shù)組和各種List的性能小結(jié)

    比較Java數(shù)組和各種List的性能小結(jié)

    這篇文章主要是分別對Java數(shù)組、ArrayList、LinkedList和Vector進行隨機訪問和迭代等操作,并比較這種集合的性能。有需要的可以參考借鑒。
    2016-08-08
  • Maven打包跳過測試的三種方法

    Maven打包跳過測試的三種方法

    這篇文章主要介紹了Maven打包跳過測試的三種方法,幫助大家更好的理解和使用maven,感興趣的朋友可以了解下
    2020-11-11
  • 關(guān)于springboot響應(yīng)式編程整合webFlux的問題

    關(guān)于springboot響應(yīng)式編程整合webFlux的問題

    在springboot2.x版本中提供了webFlux依賴模塊,該模塊有兩種模型實現(xiàn):一種是基于功能性端點的方式,另一種是基于SpringMVC注解方式,今天通過本文給大家介紹springboot響應(yīng)式編程整合webFlux的問題,感興趣的朋友一起看看吧
    2022-01-01
  • 使用java web 在jsp文件及Class中連接MySQL和SQLserver 的驅(qū)動方法

    使用java web 在jsp文件及Class中連接MySQL和SQLserver 的驅(qū)動方法

    這篇文章主要介紹了使用java web 在jsp文件及Class中連接MySQL和SQLserver的驅(qū)動方法的相關(guān)資料,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下
    2016-10-10
  • Java中的@builder建造者模式詳細解析

    Java中的@builder建造者模式詳細解析

    這篇文章主要介紹了Java中的@builder建造者模式詳細解析,使用 @Builder 注解可以簡化手動編寫建造者模式的代碼,使代碼更加簡潔易讀,它可以自動生成鏈式調(diào)用的方法來設(shè)置對象的屬性,并且可以在需要時進行可選屬性的設(shè)置,需要的朋友可以參考下
    2024-01-01
  • SpringBoot實現(xiàn)application.yml文件敏感信息加密

    SpringBoot實現(xiàn)application.yml文件敏感信息加密

    本文主要介紹了SpringBoot實現(xiàn)application.yml文件敏感信息加密,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07

最新評論