Yes. 書けます。
mybatis の foreach で、1つの foreach で良く使うのは、バルクインサートを書く時、、
INSERT INTO items ( id, name. length ) VALUES <foreach collection="list" item="e" separator=","> ( #{e.id}, #{e.name}, #{e.length} ) </foreach>
バルクインサートでなお且つ、インサート文で指定するカラムも可変だった場合、
これは、foreach の中で、もう一度 foraech にする必要がある。
<insert id="insert" parameterType="map"> INSERT INTO ${scheme}.${tablename} <foreach collection="columns" item="cname" open="(" close=")" separator=","> ${cname} </foreach> VALUES <foreach collection="values" item="vlist" separator=","> <foreach collection="vlist" item="v" open="(" close=")" separator=","> #{v} </foreach> </foreach> </insert>
map に渡す values は、List<List<Object>> という形でデータを渡すことになる。