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

mybatis foreach標簽的使用詳解

 更新時間:2020年06月15日 14:45:43   作者:wt_better  
這篇文章主要介紹了mybatis foreach標簽的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

mybatis的foreach標簽經(jīng)常用于遍歷集合,構(gòu)建in條件語句或者批量操作語句。

下面是foreach標簽的各個屬性

屬性 描述
collection 表示迭代集合的名稱,可以使用@Param注解指定,如下圖所示 該參數(shù)為必選
item 表示本次迭代獲取的元素,若collection為List、Set或者數(shù)組,則表示其中的元素;若collection為map,則代表key-value的value,該參數(shù)為必選
open 表示該語句以什么開始,最常用的是左括弧'(',注意:mybatis會將該字符拼接到整體的sql語句之前,并且只拼接一次,該參數(shù)為可選項
close 表示該語句以什么結(jié)束,最常用的是右括弧')',注意:mybatis會將該字符拼接到整體的sql語句之后,該參數(shù)為可選項
separator mybatis會在每次迭代后給sql語句append上separator屬性指定的字符,該參數(shù)為可選項
index 在list、Set和數(shù)組中,index表示當前迭代的位置,在map中,index代指是元素的key,該參數(shù)是可選項。

假設接口中傳遞的list如下所示:

List<String> list = new ArrayList<>();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");

其中foreach標簽配置如下:

<foreach collection="list" item="item" separator=",">
		(#{item})
</foreach>

可以看到的是foreach標簽指定了逗號作為分隔符,那么mybatis將會解析出foreach標簽里面的內(nèi)容作為一個整體然后再其后面拼接上逗號分隔符,拼接后的過程如下所示:

('zhangsan') 			   //第一步,迭代集合,獲取對應的item,和外部的(),拼接形成('zhangsan')
('zhangsan'),				   //第二步,在之前的基礎上拼接上逗號分隔符
('zhangsan'),('lisi')    //第三步,繼續(xù)迭代
('zhangsan'),('lisi'),    //第四步,拼接逗號分隔符
('zhangsan'),('lisi'),('wangwu') //第五步,迭代集合并拼接,到此迭代結(jié)束

最終的結(jié)果為

('zhangsan'),('lisi'),('wangwu')

如果在foreach標簽前面加上insert into table values,將會變形成

INSERT INTO user(user_name) VALUES('zhangsan'),('lisi'),('wangwu') 
1

這種形式一般用于數(shù)據(jù)庫的批量增加。

如果將foreach配置修改如下,指定open屬性為左括弧,close屬性為右括?。?/p>

<foreach collection="list" item="item" open="(" separator="," close=")">
		#{item}
</foreach>

那么拼接的過程如下所示

(        //第一步,拼接open指定的開始字符
('zhangsan'					 //第二步,迭代集合,拼接對應的item
('zhangsan',				 //第三步,拼接separator指定的分隔符
('zhangsan','lisi'			 //第四步,迭代集合,拼接對應的item
('zhangsan','lisi',			 //第五步,拼接separator指定的分隔符
('zhangsan','lisi','wangwu'  //第六步,迭代集合,拼接對應的item
('zhangsan','lisi','wangwu') //第七步,拼接close指定的閉合字符

最終結(jié)果是:

('zhangsan','lisi','wangwu')

如果在foreach標簽前面加上select … from table where … in ,將會變形成

SELECT * FROM user WHERE user_name in ('zhangsan','lisi','wangwu')

這種形式被用來構(gòu)建in條件語句。

如果collection類型為map,則index代表key,item代表對應的value,可以這樣進行批量插入:


其中Role實體類如下:

如果你想了解更多的關(guān)于mybaits標簽的使用,請移步mybatis trim標簽的使用
本文參考mybatis官方文檔

到此這篇關(guān)于mybatis foreach標簽的使用詳解的文章就介紹到這了,更多相關(guān)mybatis foreach標簽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring security登錄成功后跳轉(zhuǎn)回登錄前的頁面

    spring security登錄成功后跳轉(zhuǎn)回登錄前的頁面

    這篇文章主要介紹了spring security登錄成功后跳轉(zhuǎn)回登錄前的頁面,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Spring實現(xiàn)泛型注入的示例詳解

    Spring實現(xiàn)泛型注入的示例詳解

    Spring?4.0版本中更新了很多新功能,其中比較重要的一個就是對帶泛型的Bean進行依賴注入的支持。本文將通過實例詳細講講Spring如何實現(xiàn)泛型注入,需要的可以參考一下
    2022-07-07
  • java 中序列化NotSerializableException問題解決辦法

    java 中序列化NotSerializableException問題解決辦法

    這篇文章主要介紹了java 中序列化NotSerializableException問題解決辦法的相關(guān)資料,這里對序列化問題進行描述說明,并提供解決辦法,希望能幫助到大家,需要的朋友可以參考下
    2017-08-08
  • Springboot基礎之RedisUtils工具類

    Springboot基礎之RedisUtils工具類

    本文來說下RedisUtils工具類,主要介紹了整合Redis、MyBatis,封裝RedisUtils工具類等知識,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • Java解析xml文件和json轉(zhuǎn)換的方法(DOM4j解析)

    Java解析xml文件和json轉(zhuǎn)換的方法(DOM4j解析)

    相信大家都知道Java解析xml的方法有四種,每種方法都很不錯,今天通過本文給大家分享使用DOM4j進行解析的方法,文章通過兩種方法給大家進行解析,感興趣的朋友一起看看吧
    2021-08-08
  • Java基礎-Java基本數(shù)據(jù)類型

    Java基礎-Java基本數(shù)據(jù)類型

    這篇文章主要介紹了Java基礎-Java基本數(shù)據(jù)類型,變量就是申請內(nèi)存來存儲值。也就是說,當創(chuàng)建變量的時候,需要在內(nèi)存中申請空間,下面我們就來對Java基本數(shù)據(jù)類型作簡單的介紹,需要的朋友可以參考一下
    2022-01-01
  • JavaMe開發(fā)繪制可自動換行文本

    JavaMe開發(fā)繪制可自動換行文本

    JavaMe Graphics類中的drawString不支持文本換行,這樣繪制比較長的字符串時,文本被繪制在同一行,超過屏幕部分的字符串被截斷了。如何使繪制的文本能自動換行呢?
    2015-09-09
  • 由淺到深帶你詳談Java實現(xiàn)數(shù)組擴容的三種方式

    由淺到深帶你詳談Java實現(xiàn)數(shù)組擴容的三種方式

    這篇文章主要詳細介紹了Java實現(xiàn)數(shù)組擴容的三種方式,新建一個數(shù)組,把原來數(shù)組的內(nèi)容搬到新數(shù)組中,使用system.arraycopy(),使用java.util.Arrays.copyOf()這三種方式,具有一定的參考價值,需要的朋友可以借鑒一下
    2023-06-06
  • Java GUI制作簡單的管理系統(tǒng)

    Java GUI制作簡單的管理系統(tǒng)

    這篇文章主要為大家詳細介紹了Java GUI制作簡單的管理系統(tǒng)的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • java lambda表達式用法總結(jié)

    java lambda表達式用法總結(jié)

    這篇文章主要介紹了java lamda表達式用法總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10

最新評論

乐昌市| 青岛市| 隆德县| 鹤庆县| 闻喜县| 晴隆县| 象州县| 什邡市| 青铜峡市| 桓台县| 潞西市| 长子县| 嘉兴市| 三台县| 仪征市| 华亭县| 武功县| 三原县| 滁州市| 教育| 塘沽区| 河北区| 如皋市| 军事| 嘉善县| 日土县| 吉木萨尔县| 酒泉市| 寿光市| 宕昌县| 尤溪县| 秦安县| 芜湖县| 石首市| 纳雍县| 金堂县| 武功县| 镇安县| 板桥市| 通道| 江达县|