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能实现批量插入后返回主键的操作

posted @ 2018-07-24 16:11  無玑小姐  阅读(338)  评论(0编辑  收藏  举报