foreach一共有三种类型,分别为List,[](array),Map三种。

foreach的第一篇用来将List和数组(array)。

下面表格是我总结的各个属性的用途和注意点。

foreach属性

属性 描述
item 循环体中的具体对象。支持属性的点路径访问,如item.age,item.info.details。
具体说明:在list和数组中是其中的对象,在map中是value。
该参数为必选。
collection 要做foreach的对象,作为入参时,List<?>对象默认用list代替作为键,数组对象有array代替作为键,Map对象用map代替作为键。
当然在作为入参时可以使用@Param("keyName")来设置键,设置keyName后,list,array,map将会失效。 除了入参这种情况外,还有一种作为参数对象的某个字段的时候。举个例子:
如果User有属性List ids。入参是User对象,那么这个collection = "ids"
如果User有属性Ids ids;其中Ids是个对象,Ids有个属性List id;入参是User对象,那么collection = "ids.id"
上面只是举例,具体collection等于什么,就看你想对那个元素做循环。
该参数为必选。
separator 元素之间的分隔符,例如在in()的时候,separator=","会自动在元素中间用“,“隔开,避免手动输入逗号导致sql错误,如in(1,2,)这样。该参数可选。
open foreach代码的开始符号,一般是(和close=")"合用。常用在in(),values()时。该参数可选。
close foreach代码的关闭符号,一般是)和open="("合用。常用在in(),values()时。该参数可选。
index 在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选。

Service

public Message allSaveReservation(PrivateBrandEntity main, List<PrivateBrandEntity> items){

Map params = new HashMap();

params.put("djh", djh);

params.put("items", items);

saveReservationCB(params);

}

dao mapper 层保持与saveReservationCB(params);一致

mapper.xml

<!-- 插入table数据 -->
<insert id="saveReservationCB" parameterType="java.util.Map">
insert into YYZY.T_YYZY_ZYPP_YL_CB(ZBDM, YYDM, YYPC, YLJS, YYZL, MJJZ, YYNF, YYCDDM, YYDJDM, YYLBDM, YYKBDM, YYBZDM)
with yyxx(YYNF,YYCDDM,YYDJDM,YYLBDM,YYKBDM,YYBZDM,YYPC,yljs) AS
(
VALUES

<foreach collection="items" item="item" separator=",">
(#{item.yynf},#{item.yycddm},#{item.yydjdm},#{item.yylbdm},#{item.yykbdm},#{item.yybzdm},#{item.yypc},#{item.yljs})
</foreach>
)

,tb_zbdm as(
select zbdm
from YYZY.T_YYZY_ZYPP_YL_ZB
where djh= #{djh, jdbcType=VARCHAR}
group by zbdm)

select b.zbdm, d.YYDM, a.YYPC, a.YLJS, c.gjmj*a.yljs as YYZL, c.gjmj as MJJZ, a.YYNF, D.YYCDBS, D.YYDJBS, D.YYLBBS, D.YYKBBS, A.YYBZDM
from yyxx as a
 left join tb_zbdm as b
on 1=1
 left join DIM.T_DIM_YYZY_GJMJ as c
on a.yylbdm=c.yylbdm
 and a.yykbdm=c.yykbdm
left join YYZY.T_YYZY_YYZDBMX_7 as d
on a.yycddm=d.yycddm
and a.yydjdm=d.yydjdm
and a.yylbdm=d.yylbdm
and a.yykbdm=d.yykbdm
and a.yynf=d.yynf
and a.yypc=d.yypc
</insert>

Mybatis 之 foreach 批处理 map 中的键值 为list 的操作相关推荐

  1. 通过Value获取Map中的键值Key的四种方法

    1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...

  2. 移除map中的键值对

    背景 实现 A little bit of progress every dayCome on 背景 项目中需要移除map集合中对应的键值对,用以控制数据的变化. 实现 这里我写了一个测试方法,通过打 ...

  3. java如何获得键值_如何在java中取map中的键值 的两种方法

    第一种方法根据键值的名字取值 import java.util.HashMap; import java.util.Map; public class Test { /** * @param args ...

  4. JAVA中如何取map的值_如何在java中取map中的键值 的两种方法

    第一种方法根据键值的名字取值 import java.util.HashMap; import java.util.Map; public class Test { /** * @param args ...

  5. Struts2.3,s:iterator,c:forEach遍历map中的list集合

    一:首先是<s:iterator></s:iterator>遍历map中的list集合,代码如下: 1.首先是后台代码,包括定义map和给map中赋值,代码如下: packag ...

  6. scala中map添加值_如何在Scala Map中反转键和值

    scala中map添加值 A Map is a data structure that stores data as key: value pair. 映射是一种将数据存储为键:值对的数据结构. Sy ...

  7. 遍历Map集合的键值对

    方法一: import java.util.*; public class test2 {public static void main(String[] args) {Map<String, ...

  8. 如何在 bash 中使用键值字典

    在字典中,字典存储一组键,每个键都有一个与之关联的值.可以使用对应的键在字典中插入.检索或更新值.字典数据结构针对基于键值的快速检索进行了优化,因此通常使用哈希表来实现.在不同的编程语言中,字典通常有 ...

  9. @PropertySource读取外部配置文件中的k-v保存到运行的环境变量中,加载完微博的配置文件以后使用${}取配置文件中的键值

    @PropertySource读取外部配置文件中的k-v保存到运行的环境变量中,加载完微博的配置文件以后使用${}取配置文件中的键值 该注解value={},可以使用String数组形式,读取多个配置 ...

最新文章

  1. python语言有什么用-Python到底有什么用?为什么那么多人都在学Python?
  2. Docker学习笔记之保存和共享镜像
  3. spring 配置只读事务_只读副本和Spring Data第1部分:配置数据库
  4. aspx是什么语言_什么是网页
  5. python 解析模块脚本_Python pexpect模块及shell脚本except原理解析
  6. 苹果公布AirPods Pro维修费用:705元买一只,789买充电盒
  7. 零基础学习前端:学习路线、学习计划、实战项目和面试题简历分享。
  8. Java 8 Base64 编码解码
  9. 计算机管理-共享打印,打印机局域网共享怎么设置?最简单稳定的方法:一键共享...
  10. 【青梅快讯】不断前行,Greenplum发布最新版本 6.16.2
  11. C语言链表创建的电子通讯录V1.0
  12. 查看360极速浏览器已保存的星号密码明文
  13. 用Excel制作贪吃蛇
  14. 高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENOB、分辨率、RMS、SFDR、THD、SINAD、dBFS、TWO-TONE IMD
  15. python 爬取链家成交房数据案例
  16. ActiveMQ 安装及使用过程
  17. NAT模式/路由模式/全路由模式
  18. 东北大学c语言课程设计,东北大学C语言(课程设计)程序实践报告.docx
  19. leetcode刷题之旅(5) Longest Palindromic Substring
  20. freemarker生成word文件,word文件打不开解决方法。

热门文章

  1. 利用 Sony Vegas 制作消音伴奏教程
  2. 傅老师课堂:Ajax高级应用之DWR原理解析(二)
  3. [Python从零到壹] 五十六.图像增强及运算篇之图像平滑(中值滤波、双边滤波)
  4. 华为云计算机遇,华为云计算解决方案介绍
  5. 简单讲解ANSI Unicode、GBK、GB2312
  6. 南昌大学计算机调剂难吗,南昌大学计算机应用技术专业调剂生复试经验(2)
  7. 白话数字化-1:什么是数字化?
  8. Java 入门 之 无法解析包
  9. NodeJs——node.js安装在window和linux
  10. php libjpeg,Linux 安装php-5.2.17出现 libjpeg.(a|so) not found