MyBatis 碰到的问题
Mybatis之foreach遍历Map
参考
void batchInsertMap(@Param("studentMap") Map<Integer,Student> studentMap);
- 对应Sql,使用
entrySet()
,注意 index
是key
,item
是value
<insert id="batchInsertMap" parameterType="java.util.Map">
INSERT INTO student(id,username)
VALUES
<foreach collection="studentMap.entrySet()" index="key" item="value" separator=",">
(#{key},#{value.username})
</foreach>
</insert>
Mybatis中进行批量更新
参考
void batchUpdateMap(@Param("studentMap") Map<Integer,String> studentMap);
<insert id="batchUpdateMap" parameterType="java.util.Map">
update student
<trim prefix="set" suffixOverrides=",">
<trim prefix="username = case" suffix="end,">
<foreach collection="studentMap.entrySet()" index="key" item="value">
when id= #{key} then #{value}
</foreach>
</trim>
<trim prefix="salary = case" suffix="end,">
<foreach collection="studentMap.entrySet()" index="key" item="value">
when id= #{key} then 100
</foreach>
</trim>
</trim>
where id in
<foreach collection="studentMap.entrySet()" index="key" separator="," open="(" close=")">
#{key}
</foreach>
</insert>