亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mybatis注解開(kāi)發(fā)使用foreach方式

 更新時(shí)間:2024年08月20日 09:07:09   作者:尋夢(mèng)太極  
這篇文章主要介紹了mybatis注解開(kāi)發(fā)使用foreach方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mybatis注解開(kāi)發(fā)使用foreach

寫(xiě)法看代碼

    @Select( " <script>" +
            " select id, user_id userId, batch_number batchNumber, unit_name unitName, word_detail wordDetail,word, score, create_time createTime " +
            " from word_practice_records where user_id =#{userId} and batch_number=#{batchNumber} and unit_name=#{unitName} and  word  in "+
            " <foreach collection='wordScoreViewList' open='(' item='wordScore' separator=',' close=')'> #{wordScore.word}</foreach> "+
            " </script>" )
    List<WordPracticeRecords> getLessThan40WordByWordList(@Param("userId") String userId, @Param( "batchNumber" )String batchNumber,
                                                          @Param( "unitName" ) String unitName, @Param( "wordScoreViewList" ) List<WordScoreView>  wordScoreViewList);

注意:

需要再前后增加<script></script> 標(biāo)簽

循環(huán)使用

<foreach collection='wordScoreViewList' open='(' item='wordScore' separator=',' close=')'> 
    #{wordScore.word}
</foreach>

mybatis中的foreach語(yǔ)句簡(jiǎn)介

mybatis中的foreach語(yǔ)句適用于多種業(yè)務(wù)場(chǎng)景,主要起的作用是迭代集合。

在實(shí)際應(yīng)用場(chǎng)景中,使用一個(gè)正確的foreach能夠提高執(zhí)行效率,所以通過(guò)記錄最近一次使用foreach的具體場(chǎng)景來(lái)了解foreach的具體實(shí)現(xiàn)。

Mybatis的foreach語(yǔ)法

通過(guò)業(yè)務(wù)層傳入一個(gè)LIst集合,其中存放了一批id號(hào),List list 隨后我要對(duì)此集合中的id取出依次遍歷,即寫(xiě)法如下

select * from user where 1=1
<if test="id != null">
    and id in
    <foreach item="item" index="index" collection="list"  open="(" separator="," close=")">
   		'#{item}'
	</foreach>
</if>

等同于以下的mysql寫(xiě)法:

select * from user where id in (1,2,3,4,5)

其中需要注意的是collection參數(shù)后面的值要與變量名保持一致,我這里為list則需要保持一致,關(guān)于這幾個(gè)參數(shù)的詳解在文末會(huì)有介紹。

進(jìn)階寫(xiě)法

假如我傳過(guò)來(lái)的是一個(gè)以,為分隔符的連貫字符串,例如某個(gè)對(duì)象中有一個(gè)屬性String extInfo = “1,2,3,4,5”,依然跟上述的業(yè)務(wù)場(chǎng)景一致,那我們就需要先將該字符串做處理之后再進(jìn)行foreach迭代

select * from user where 1=1
<if test="extInfo != null">
    and id in
    <foreach item="item" index="index" collection="extInfo.split(',')"  open="(" separator="," close=")">
   		'#{item}'
	</foreach>
</if>

還有一種業(yè)務(wù)場(chǎng)景是針對(duì)Map的迭代,例如有一個(gè)key-value對(duì)應(yīng)的是ids-List,我們也能通過(guò)foreach迭代該map下的ids鍵來(lái)實(shí)現(xiàn)

select * from user where 1=1
<if test="extInfo != null">
    and id in
    <foreach item="item" index="index" collection="ids"  open="(" separator="," close=")">
   		'#{item}'
	</foreach>
</if>

原理

上述的foreach應(yīng)用場(chǎng)景主要解決了使用in語(yǔ)句迭代批量查詢(xún),迭代刪除以及迭代編輯等批量操作,那其中的參數(shù)具體是什么意思呢。

  • item表示集合中每一個(gè)元素進(jìn)行迭代時(shí)的別名
  • index表示索引
  • collection表示要迭代的集合
  • open表示前綴的拼接內(nèi)容
  • separator表示迭代集合
  • close表示后綴的拼接內(nèi)容

基本語(yǔ)法就包括了上述的6個(gè)參數(shù),各個(gè)參數(shù)都代表著各自的含義,在實(shí)際應(yīng)用中使用foreach迭代能夠幫助我們完成各類(lèi)批量操作。

總結(jié)

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

相關(guān)文章

  • 在IntelliJ IDEA中使用gulp的方法步驟(圖文)

    在IntelliJ IDEA中使用gulp的方法步驟(圖文)

    這篇文章主要介紹了在IntelliJ IDEA中使用gulp的方法步驟(圖文),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • SpringBoot中定制異常頁(yè)面的實(shí)現(xiàn)方法

    SpringBoot中定制異常頁(yè)面的實(shí)現(xiàn)方法

    這篇文章主要介紹了SpringBoot中定制異常頁(yè)面的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java的Flowable工作流之加簽轉(zhuǎn)簽詳解

    Java的Flowable工作流之加簽轉(zhuǎn)簽詳解

    這篇文章主要介紹了Java的Flowable工作流之加簽轉(zhuǎn)簽詳解,Flowable是一個(gè)開(kāi)源的工作流引擎,它提供了一套強(qiáng)大的工具和功能,用于設(shè)計(jì)、執(zhí)行和管理各種類(lèi)型的工作流程,需要的朋友可以參考下
    2023-11-11
  • Java?NIO實(shí)現(xiàn)聊天室功能

    Java?NIO實(shí)現(xiàn)聊天室功能

    這篇文章主要為大家詳細(xì)介紹了Java?NIO實(shí)現(xiàn)聊天室功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • java中生成任意之間數(shù)的隨機(jī)數(shù)詳解

    java中生成任意之間數(shù)的隨機(jī)數(shù)詳解

    這篇文章主要介紹了java中生成任意之間數(shù)的隨機(jī)數(shù)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 基于java HashMap插入重復(fù)Key值問(wèn)題

    基于java HashMap插入重復(fù)Key值問(wèn)題

    這篇文章主要介紹了基于java HashMap插入重復(fù)Key值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • java數(shù)據(jù)庫(kù)數(shù)據(jù)分批讀取的實(shí)現(xiàn)示例

    java數(shù)據(jù)庫(kù)數(shù)據(jù)分批讀取的實(shí)現(xiàn)示例

    在處理大量數(shù)據(jù)時(shí),直接從數(shù)據(jù)庫(kù)一次性讀取所有數(shù)據(jù)可能會(huì)導(dǎo)致內(nèi)存溢出或者性能下降,本文就來(lái)介紹一下java數(shù)據(jù)庫(kù)數(shù)據(jù)分批讀取的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2024-01-01
  • 使用注解進(jìn)行Spring開(kāi)發(fā)的全過(guò)程

    使用注解進(jìn)行Spring開(kāi)發(fā)的全過(guò)程

    使用注解(Annotation)是一種在代碼級(jí)別進(jìn)行說(shuō)明和標(biāo)記的技術(shù),它從JDK 5.0開(kāi)始引入,并在現(xiàn)代Java開(kāi)發(fā)中得到了廣泛應(yīng)用,本文將詳細(xì)介紹Spring框架中常用的注解及示例,幫助開(kāi)發(fā)者快速掌握Spring注解開(kāi)發(fā)的要點(diǎn)和技巧,需要的朋友可以參考下
    2023-11-11
  • Java集合List相關(guān)面試題整理大全

    Java集合List相關(guān)面試題整理大全

    這篇文章主要給大家介紹了關(guān)于Java集合List相關(guān)面試題整理的相關(guān)資料,下面將提供一些常見(jiàn)的Java集合類(lèi)面試題及其解答,幫助讀者更好地準(zhǔn)備面試,需要的朋友可以參考下
    2024-01-01
  • idea解決Git分支合并沖突問(wèn)題

    idea解決Git分支合并沖突問(wèn)題

    這篇文章主要介紹了idea解決Git分支合并沖突問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08

最新評(píng)論