当我们要往数据库中批量保存多条数据得时候,分不同数据库,有不同得插入方式。结合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类的属性名。