MySQL和Oracle中批量插入数据的sql差别

当我们要往数据库中批量保存多条数据得时候,分不同数据库,有不同得插入方式。结合MyBatis,来看看MySQL和Oracle分别是如何操作的。
如果往MySql数据库中批量保存数据,sql可如下写:

        INSERT INTO
        <include refid="table_name" />
        (
        <include refid="columns" />
        )
        VALUES(
        <foreach collection="list" item="item" index="index" separator=",">  
        (
        #{item.orgNo},#{item.orgName},#{item.parentOrgNo},#{item.orgStatus},#{item.orgType},
        #{item.orgTelphone},#{item.contactName},#{item.orgAddress},#{item.orgNameShort},#{item.effDate},
        #{item.expDate},#{item.orgLevel},#{item.lastMaintainTime}
        )
       </foreach>
        )

如果往Oracle数据库中批量保存数据,sql可如下写:

<insert id="batchSaveBranchBankInfos" parameterType="java.util.List">
    INSERT  INTO
    <include refid="table_name" />
    (
    <include refid="columns" />
    )
    VALUES(
    <foreach close=")" open="(" collection="list" item="item" index="index" separator="union">  
        select
        #{item.orgNo},#{item.orgName},#{item.parentOrgNo},#{item.orgStatus},#{item.orgType},
        #{item.orgTelphone},#{item.contactName},#{item.orgAddress},#{item.orgNameShort},#{item.effDate},
        #{item.expDate},#{item.orgLevel},#{item.lastMaintainTime}
        from dual
   </foreach>
</insert>

如需引用,只需改掉相应的表名,表字段,及“#”号后边的vo类的属性名。

猜你喜欢

转载自blog.csdn.net/tanwenfang/article/details/80382533
今日推荐