【mybatis 】mybatis foreach操作动态表

1.传入的数据key为表的字段,value为值。Map<String, String>。

int saveDatalist(@Param("params")Map<String, String> params);
<!-- 保存新增数据 -->
    <insert id="saveDatalist" parameterType="java.util.Map">
        insert into ZR_REC_PARKINFO
        <foreach collection="params.keys" item="key" index="index" open="(" separator="," close=")">
            ${key}
        </foreach>
        values
        <foreach collection="params.keys" item="key" index="index" open="(" separator="," close=")">
            #{params[${key}]}
        </foreach>

    </insert>

2.  

<!-- 保存新增数据 -->
    <insert id="saveDatalistTable" parameterType="java.util.HashMap">
        insert into ${table}
        <foreach collection="listMap.keys" item="key" index="index" open="(" separator="," close=")">
            ${key}
        </foreach>
        values
        <foreach collection="listMap.keys" item="key" index="index" open="(" separator="," close=")">
            #{listMap[${key}]}
        </foreach>

    </insert>

3.java.util.Map保存着p_code,list,pama。pama存着一个Map,list是要插入的字段(pama的字段更多)。

<!-- 保存新增数据 -->
	<insert id="saveDatalist" parameterType="java.util.Map"> 
		insert into ${p_code}
		<foreach collection="list" item="k" index="index" open="(" separator="," close=")">
            ${k}
        </foreach>
        values
        <foreach collection="list" item="k" index="index" open="(" separator="," close=")">
            ${pama[k]}
        </foreach>
	</insert>

4.当表名和字段都不知时,批量操作。java.util.List将上面的Map存入。

<!-- 保存新增数据 -->
	<insert id="saveDatalist2" parameterType="java.util.List" useGeneratedKeys="false">
	  INSERT ALL
		<foreach collection = "list" item ="item" index ="index">
			into ${item.p_code}
			<foreach collection="item.list" item="k" index="index" open="(" separator="," close=")">
				${k}
			</foreach>
			values
			<foreach collection="item.list" item="k" index="index" open="(" separator="," close=")">
				${item.pama[k]}
			</foreach>
		</foreach>
	  select 1 from dual
	</insert>

猜你喜欢

转载自blog.csdn.net/wjx_jasin/article/details/83752205