mybatis中foreach标签存map
向数据库中插入5条数据两个值ab,但是ab强关联
-
首先封装一个map
//如学生对应成绩 Map<String,String> map = new HashMap(); for(int i = 0; i < 5; i++){ map.put("stu"+i,"grade"+i); }
-
然后传入mapper的时候利用@param再封装一层(我是把@param当作自动封装一层map来用的)
//现在就可以看成Map<map2,map<stu,grade>> void insertMap(@Param("map2") Map<String, String> map);
-
然后先把foreach标签要注意的先贴出来
foreach 元素的属性主要有 item,index,collection,open,separator,close
item:表示集合中每一个元素进行迭代时的别名
index:指定一个名字,用于表示在迭代过程中,每次迭代到的位置
open:表示该语句以什么开始
separator:表示在每次进行迭代之间以什么符号作为分隔符
close:表示以什么结束
collection:三种情况{1.传入一个list就为list
2.传入一个数组就是array
3.传入多个参数比如好多list,就可以用map接收,再用@param注解,这时候属性值为Map的键值
,也就是@param的值.key
}
第四种情况:如果再套一层Map,collection为Map的键值
,或者直接使用@param的值
作为collection的参数时,index就表示map的键,item代表map中这个键对应的的值 -
mybatis
<insert id="insertMap"> insert into table <trim prefix="(" suffix=")" suffixOverrides="," > stu, grade </trim> values <foreach collection="map2" item="value" index="key" separator="," > <trim prefix="(" suffix=")" suffixOverrides="," > #{key}, #{value} </trim> </foreach> </insert>