1. 程式人生 > >【mybatis 】mybatis foreach操作動態表

【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>