mybatis foreach 循環(huán) list(map)實(shí)例
foreach 循環(huán) list(map)
直接上代碼:
整體需求就是
1.分頁對象里面有map map里面又有數(shù)組對象
2.分頁對象里面有l(wèi)ist list里面有map map里面有數(shù)組對象。
public class Page {
private Map maps;
private List lists;
public Map getMaps() {
return maps;
}
public void setMaps(Map maps) {
this.maps = maps;
}
public List getLists() {
return lists;
}
public void setLists(List lists) {
this.lists = lists;
}
}
String [] str = {"1,2"};
Page page = new Page(); 實(shí)體分頁對象(包括其他頁面屬性)
maps.put("str", str); ? 批量查詢的ID
page.setMaps(maps); ? ? maps對象保存在分頁屬性中
List<Map> mapTest = userService.mapTest(page);
System.out.println(mapTest);需求。請求前臺頁面的時候 需要傳多個訂單號比如1,2
然而其他參數(shù)也要有。就要用到分頁實(shí)體 跟map結(jié)合 分頁實(shí)體保存其他屬性。map保存要循環(huán)的ID 或是訂單號
mybatis.foreach循環(huán)如下

這里只做ID或是訂單ID的演示,普通屬性#{id}就行。
取page.maps.str(str是一個數(shù)組)
在collection 這里面直接寫 入?yún)?maps
如果入?yún)⑹荓IST
稍微改一下即可
源數(shù)據(jù)
maps.put("str", str);
list.add(maps);
List<Map> mapTest = userService.mapTest1(list);
System.out.println(mapTest);<foreach item="items" index="index" collection="list" open="(" ?separator="," ?close=")"> -->
? ? ? <foreach item="item" index="index" collection="items.str" open="(" ?separator="," ?close=")" ? >
? ? ? ? ? ? ? ? #{item}
? ? ? </foreach>
</foreach>
原理就是 先告訴mybatis我要先循環(huán)list然后拿到list里面的map.str 即可。
使用foreach處理list中的map
參數(shù)的數(shù)據(jù)結(jié)構(gòu)是一個ArrayList<Map<String, Integer>>,需要以String,Integer為條件批量更新數(shù)據(jù)庫的數(shù)據(jù).
將參數(shù)封裝到叫做JsonData的qv中,JsonData的關(guān)鍵代碼是
? ? private ArrayList<Map<String, Integer>> usersPlatforms;
? ? public ArrayList<Map<String, Integer>> getUsersPlatforms() {
? ? ? ? return usersPlatforms;
? ? }
?
? ? public void setUsersPlatforms(ArrayList<Map<String, Integer>> usersPlatforms) {
? ? ? ? this.usersPlatforms = usersPlatforms;
? ? }Mapper中的方法是
updateXxxx(JsonData jsonData);
Mapper.xml的sql是
<update id="updateXxxx" parameterType="JsonData">
? ? ? ? UPDATE xxx SET `xx` = 10
? ? ? ? <where>
? ? ? ? ? ? <foreach collection="usersPlatforms" item="userPlatform" open="" close="" separator="OR">
? ? ? ? ? ? ? ? <foreach collection="userPlatform.keys" item="key" open=" user_id = " close="" separator="">
? ? ? ? ? ? ? ? ? ? #{key}
? ? ? ? ? ? ? ? </foreach>
? ? ? ? ? ? ? ? <foreach collection="userPlatform.values" item="value" open=" AND platform = " close="" separator="">
? ? ? ? ? ? ? ? ? ? #{value}
? ? ? ? ? ? ? ? </foreach>
? ? ? ? ? ? </foreach>
? ? ? ? </where>
? ? </update>以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解領(lǐng)域驅(qū)動設(shè)計(jì)之事件驅(qū)動與CQRS
這篇文章分析了如何應(yīng)用事件來分離軟件核心復(fù)雜度。探究CQRS為什么廣泛應(yīng)用于DDD項(xiàng)目中,以及如何落地實(shí)現(xiàn)CQRS框架。當(dāng)然我們也要警惕一些失敗的教訓(xùn),利弊分析以后再去抉擇正確的應(yīng)對之道2021-06-06
java設(shè)計(jì)模式學(xué)習(xí)之簡單工廠模式
這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式學(xué)習(xí)之簡單工廠模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
Java用Arrays.asList初始化ArrayList實(shí)例方法
在本篇文章里小編給大家分享的是關(guān)于Java中使用Arrays.asList初始化ArrayList的知識點(diǎn)內(nèi)容,需要的朋友們參考下。2019-10-10
Windows10系統(tǒng)下JDK1.8環(huán)境變量的配置
今天帶大家學(xué)習(xí)在Windows10系統(tǒng)下怎么配置JDK1.8環(huán)境變量,文中有非常詳細(xì)的安裝及配置教程,對正在學(xué)習(xí)的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05
Spring?Security?基于URL的權(quán)限判斷源碼解析
這篇文章主要介紹了Spring?Security?基于URL的權(quán)限判斷問題,我們想要實(shí)現(xiàn)自己的基于請求Url的授權(quán)只需自定義一個?AccessDecisionManager即可,接下來跟隨小編一起看看實(shí)現(xiàn)代碼吧2021-12-12
JAVA通過Filter實(shí)現(xiàn)允許服務(wù)跨域請求的方法
這里的域指的是這樣的一個概念:我們認(rèn)為若協(xié)議 + 域名 + 端口號均相同,那么就是同域即我們常說的瀏覽器請求的同源策略。這篇文章主要介紹了JAVA通過Filter實(shí)現(xiàn)允許服務(wù)跨域請求,需要的朋友可以參考下2018-11-11
vue 實(shí)現(xiàn)刪除對象的元素 delete
這篇文章主要介紹了vue 實(shí)現(xiàn)刪除對象的元素delete,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03

