mybatis批量插入oracle和mysql
<insert id="batchInsert" parameterType="java.util.List"> INSERT INTO TEST( A, B, C, D, E ) <foreach collection="list" index="index" item="item" separator="UNION ALL"> SELECT #{item.a, jdbcType=VARCHAR} A, #{item.b, jdbcType=VARCHAR} B, #{item.c, jdbcType=VARCHAR} C, #{item.d, jdbcType=VARCHAR} D, #{item.e} E FROM dual </foreach> </insert>
以上是Oracle数据库中的写法
二,MySQL数据库中的写法
<insert id="batchInsert" parameterType="java.util.List"> INSERT INTO TEST( A, B, C, D, E ) <foreach collection="list" index="index" item="item" separator=","> #{item.a, jdbcType=VARCHAR}, #{item.b, jdbcType=VARCHAR}, #{item.c, jdbcType=VARCHAR}, #{item.d, jdbcType=VARCHAR}, #{item.e} </foreach> </insert>
MySQL批量插入并返回所有主键的写法
<insert id="id" userGeneratedKeys="true" keyProperty="id">
输出id
for(User user : list){
user.getId();
}
*** 目前只有MySQL能实现批量插入后返回主键的操作