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

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

 更新時(shí)間:2022年03月22日 15:59:04   作者:輕點(diǎn) 別打臉  
這篇文章主要介紹了Mybatis-plus foreach拼接字符串查詢無數(shù)據(jù)返回問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(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í)候,使用的是#{ }占位符號,最后解析出的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í),會將sql中的#{}替換為?號,調(diào)用PreparedStatement的set方法來賦值;mybatis在處理${}時(shí),就是把${}替換成變量的值。使用#{}可以有效的防止SQL注入,提高系統(tǒng)安全性。

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

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

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

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

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

相關(guān)文章

  • PowerJob的OmsLogHandler工作流程源碼解析

    PowerJob的OmsLogHandler工作流程源碼解析

    這篇文章主要為大家介紹了PowerJob的OmsLogHandler工作流程源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • SpringBoot中@Insert、@Update實(shí)現(xiàn)批量新增更新的使用示例

    SpringBoot中@Insert、@Update實(shí)現(xiàn)批量新增更新的使用示例

    本文主要介紹了SpringBoot中@Insert、@Update實(shí)現(xiàn)批量新增更新的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-10-10
  • 淺談Thread.sleep(0)到底有什么用

    淺談Thread.sleep(0)到底有什么用

    為什么要用sleep,主要是為了暫停當(dāng)前線程,把cpu片段讓出給其他線程,減緩當(dāng)前線程的執(zhí)行,本文主要介紹了Thread.sleep(0)到底有什么用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 詳解spring security filter的工作原理

    詳解spring security filter的工作原理

    這篇文章主要介紹了詳解spring security filter的工作原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • java8升級java21方法步驟(完整pom文件升級及代碼修改)

    java8升級java21方法步驟(完整pom文件升級及代碼修改)

    在從Java?8升級至Java?211的過程中,需要對多個(gè)POM文件進(jìn)行升級,涉及parent、web、service等模塊,文中通過代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用java具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-11-11
  • Java使用Queryable-pageable實(shí)現(xiàn)分頁效果

    Java使用Queryable-pageable實(shí)現(xiàn)分頁效果

    這篇文章主要為大家介紹了Java如何使用Queryable-pageable從而實(shí)現(xiàn)分頁效果,文中的示例代碼簡潔易懂,感興趣的小伙伴可以動手嘗試一下
    2022-06-06
  • Java如何自動生成api文檔

    Java如何自動生成api文檔

    在?Java?開發(fā)中,自動生成?API?文檔是一項(xiàng)非常實(shí)用的功能,這篇為大家介紹了幾種常見的?Java?自動生成?API?文檔的方式,需要的可以參考一下
    2025-02-02
  • SpringBoot集成gRPC微服務(wù)工程搭建實(shí)踐的方法

    SpringBoot集成gRPC微服務(wù)工程搭建實(shí)踐的方法

    這篇文章主要介紹了SpringBoot集成gRPC微服務(wù)工程搭建實(shí)踐的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • 在X分鐘內(nèi)學(xué)會C#的入門簡明教程

    在X分鐘內(nèi)學(xué)會C#的入門簡明教程

    C#是一個(gè)優(yōu)雅的、類型安全的面向?qū)ο笳Z言。使用C#,開發(fā)者可以在.NET框架下構(gòu)建安全而強(qiáng)大的應(yīng)用程序,閱讀本文可以快速的入門C#編程語言,需要的朋友可以參考下
    2014-03-03
  • Java高效實(shí)現(xiàn)電商產(chǎn)品排序?qū)崙?zhàn)

    Java高效實(shí)現(xiàn)電商產(chǎn)品排序?qū)崙?zhàn)

    這篇文章主要為大家介紹了Java高效實(shí)現(xiàn)電商產(chǎn)品排序?qū)崙?zhàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11

最新評論

大悟县| 新龙县| 浮山县| 远安县| 犍为县| 仁寿县| 惠来县| 重庆市| 邢台县| 康平县| 桂阳县| 墨玉县| 诏安县| 杭州市| 榆社县| 宜兰市| 喜德县| 清涧县| 麻城市| 五寨县| 黎城县| 蓝田县| 民权县| 惠东县| 洞口县| 汾西县| 海晏县| 昌宁县| 灌南县| 天祝| 江口县| 信丰县| 汾西县| 大厂| 绵竹市| 运城市| 临颍县| 措勤县| 同江市| 潞城市| 福鼎市|