Oracle UNION ALL
sql
<insert id="saveBatchFile">
INSERT INTO foundation.comm_file (
id, name, file_format, file_type_id, function_type,
module_data_id, function_data_id, function_data_name,
stage_type, file_token, sort_order, row_version,
is_delete, create_by, create_dt, update_by, update_dt
)
<foreach collection="list" item="item" index="index" separator="UNION ALL">
SELECT
#{item.id,jdbcType=BIGINT},
#{item.name,jdbcType=VARCHAR},
#{item.fileFormat,jdbcType=VARCHAR},
#{item.fileTypeId,jdbcType=BIGINT},
#{item.functionType,jdbcType=BIGINT},
#{item.moduleDataId,jdbcType=VARCHAR},
#{item.functionDataId,jdbcType=BIGINT},
#{item.functionDataName,jdbcType=VARCHAR},
#{item.stageType,jdbcType=BIGINT},
#{item.fileToken,jdbcType=VARCHAR},
#{item.sortOrder,jdbcType=BIGINT},
#{item.rowVersion,jdbcType=BIGINT},
#{item.isDelete,jdbcType=TINYINT},
#{item.createBy,jdbcType=BIGINT},
#{item.createDt,jdbcType=TIMESTAMP},
#{item.updateBy,jdbcType=BIGINT},
#{item.updateDt,jdbcType=TIMESTAMP}
FROM dual
</foreach>
</insert>
语法
sql
INSERT INTO comm_file (...)
SELECT ... FROM dual
UNION ALL
SELECT ... FROM dual
UNION ALL
SELECT ... FROM dual;
ORACLE INSERT ALL
sql
<insert id="saveBatchFile">
INSERT ALL
<foreach collection="list" item="item" index="index">
INTO foundation.comm_file (
id, name, file_format, file_type_id, function_type,
module_data_id, function_data_id, function_data_name,
stage_type, file_token, sort_order, row_version,
is_delete, create_by, create_dt, update_by, update_dt
) VALUES (
#{item.id,jdbcType=BIGINT},
#{item.name,jdbcType=VARCHAR},
#{item.fileFormat,jdbcType=VARCHAR},
#{item.fileTypeId,jdbcType=BIGINT},
#{item.functionType,jdbcType=BIGINT},
#{item.moduleDataId,jdbcType=VARCHAR},
#{item.functionDataId,jdbcType=BIGINT},
#{item.functionDataName,jdbcType=VARCHAR},
#{item.stageType,jdbcType=BIGINT},
#{item.fileToken,jdbcType=VARCHAR},
#{item.sortOrder,jdbcType=BIGINT},
#{item.rowVersion,jdbcType=BIGINT},
#{item.isDelete,jdbcType=TINYINT},
#{item.createBy,jdbcType=BIGINT},
#{item.createDt,jdbcType=TIMESTAMP},
#{item.updateBy,jdbcType=BIGINT},
#{item.updateDt,jdbcType=TIMESTAMP}
)
</foreach>
SELECT 1 FROM dual
</insert>
sql
INSERT ALL
INTO users (id, name) VALUES (1, 'A')
INTO users (id, name) VALUES (2, 'B')
SELECT 1 FROM DUAL;
mysql
sql
<insert id="batchInsertUsers">
INSERT INTO users (id, name, age)
VALUES
<foreach collection="list" item="user" separator=",">
(#{user.id}, #{user.name}, #{user.age})
</foreach>
</insert>
sql
INSERT INTO users (id, name, age)
VALUES
(1001, 'Alice', 25),
(1002, 'Bob', 30),
(1003, 'Charlie', 35);