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

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

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

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

Mybatis-plus xml使用foreach遍歷查詢條件,填充IN函數(shù)時(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ù)賦值的時(shí)候,使用的是#{ }占位符號(hào),最后解析出的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解析的時(shí)是有區(qū)別的

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

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

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

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

對(duì)于這個(gè)問題我感覺要抓住兩點(diǎn)

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

(2)預(yù)編譯的機(jī)制。預(yù)編譯是提前對(duì)SQL語句進(jìn)行預(yù)編譯,而其后注入的參數(shù)將不會(huì)再進(jìn)行SQL編譯。我們知道,SQL注入是發(fā)生在編譯的過程中,因?yàn)閻阂庾⑷肓四承┨厥庾址詈蟊痪幾g成了惡意的執(zhí)行操作。而預(yù)編譯機(jī)制則可以很好的防止SQL注入。

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

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

相關(guān)文章

  • 詳解SpringBoot啟動(dòng)類的掃描注解的用法及沖突原則

    詳解SpringBoot啟動(dòng)類的掃描注解的用法及沖突原則

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

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

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

    JAVA超級(jí)簡(jiǎn)單的爬蟲實(shí)例講解

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

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

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

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

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

    Maven打包跳過測(cè)試的三種方法

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

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

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

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

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

    Java中的@builder建造者模式詳細(xì)解析

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

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

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

最新評(píng)論