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

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

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

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

寫法看代碼

    @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語句簡介

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

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

Mybatis的foreach語法

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

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寫法:

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

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

進(jìn)階寫法

假如我傳過來的是一個以,為分隔符的連貫字符串,例如某個對象中有一個屬性String extInfo = “1,2,3,4,5”,依然跟上述的業(yè)務(wù)場景一致,那我們就需要先將該字符串做處理之后再進(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ù)場景是針對Map的迭代,例如有一個key-value對應(yīng)的是ids-List,我們也能通過foreach迭代該map下的ids鍵來實(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)用場景主要解決了使用in語句迭代批量查詢,迭代刪除以及迭代編輯等批量操作,那其中的參數(shù)具體是什么意思呢。

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

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

總結(jié)

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

相關(guān)文章

  • Java刪除String中空格的多種解決方法匯總

    Java刪除String中空格的多種解決方法匯總

    在Java中從字符串中刪除空格有很多不同的方法,如trim,replaceAll等,下面這篇文章主要給大家介紹了關(guān)于Java刪除String中空格的多種解決方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Java中如何判斷線程池任務(wù)已執(zhí)行完成

    Java中如何判斷線程池任務(wù)已執(zhí)行完成

    這篇文章主要介紹了Java中如何判斷線程池任務(wù)已執(zhí)行完成,文章圍繞主題展開詳細(xì)相關(guān)資料,具有一定的參考價(jià)值需要的小伙伴可以參考以參考一下
    2022-05-05
  • windows下使用 intellij idea 編譯 kafka 源碼環(huán)境

    windows下使用 intellij idea 編譯 kafka 源碼環(huán)境

    這篇文章主要介紹了使用 intellij idea 編譯 kafka 源碼的環(huán)境,本文是基于windows下做的項(xiàng)目演示,需要的朋友可以參考下
    2021-10-10
  • Java動態(tài)編譯與類加載實(shí)戰(zhàn)詳解

    Java動態(tài)編譯與類加載實(shí)戰(zhàn)詳解

    本文詳細(xì)介紹Java Compiler?API、類加載機(jī)制、反射、代理、Instrumentation、OSGi、Spring?BeanDefinition、熱部署工具及安全策略等關(guān)鍵技術(shù),并結(jié)合實(shí)際項(xiàng)目幫助開發(fā)者掌握動態(tài)類處理的完整流程與最佳實(shí)踐,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • 詳解Java中switch的新特性

    詳解Java中switch的新特性

    這篇文章主要介紹了Java中switch的新特性,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • springmvc?html資源請求404的問題解決并分析

    springmvc?html資源請求404的問題解決并分析

    這篇文章主要介紹了springmvc?html資源請求404的問題解決并分析,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Spring?循環(huán)依賴之AOP實(shí)現(xiàn)詳情

    Spring?循環(huán)依賴之AOP實(shí)現(xiàn)詳情

    這篇文章主要介紹了Spring?循環(huán)依賴之AOP實(shí)現(xiàn)詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的盆友可以參考一下
    2022-07-07
  • Spring項(xiàng)目XML文件使用小結(jié)

    Spring項(xiàng)目XML文件使用小結(jié)

    這篇文章主要介紹了Spring項(xiàng)目XML文件使用常見介紹,主要包括項(xiàng)目pom文件,項(xiàng)目初始IOC容器及項(xiàng)目需要自動裝配的代碼詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Redis集群與SSM整合使用方法

    Redis集群與SSM整合使用方法

    這篇文章主要介紹了Redis集群與SSM整合使用方法,非常不錯,具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • Stream distinct根據(jù)list某個字段去重的解決方案

    Stream distinct根據(jù)list某個字段去重的解決方案

    這篇文章主要介紹了Stream distinct根據(jù)list某個字段去重,stream的distinct去重方法,是根據(jù) Object.equals,和 Object.hashCode這兩個方法來判斷是否重復(fù)的,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05

最新評論

贵港市| 抚松县| 项城市| 凤阳县| 广昌县| 印江| 新昌县| 集贤县| 侯马市| 同心县| 西藏| 咸阳市| 永康市| 昔阳县| 石阡县| 额济纳旗| 叶城县| 宁津县| 漾濞| 云霄县| 正宁县| 汾阳市| 盐山县| 梨树县| 襄樊市| 黑水县| 定兴县| 新巴尔虎左旗| 斗六市| 盖州市| 筠连县| 台中市| 布尔津县| 鞍山市| 津市市| 青海省| 富蕴县| 师宗县| 象州县| 万载县| 石景山区|