參考 當oracle+mybaits批量insert遇到CLOB類型字段,通過使用 begin .. end 將語句放入Oracle 的塊裏實現批量提交。常規的,帶有 Sequence 的插入語句需要使用到 Mybatis 的 selectKey 標籤。但是,帶有 Sequence 和 CLOB 的卻可以使用下面更簡潔的方式完成:
<insert id="insertAll" parameterType="java.util.List">
begin
<foreach collection="list" item="item" index="index" separator=";">
insert into SYNC_MESSAGE (ID, COHORT_DEF_ID, PROJECT_ID,
REQUEST_PATH, EXE_TIME, ADV_ANALYSIS_ID,
METHOD_NAME, TYPE, STATUS, TARGET_NODE, INPUT_JSON, CHECK_SUM)
values (
SYNC_MESSAGE_SEQ.NEXTVAL,
#{item.cohortDefId,jdbcType=BIGINT},
#{item.projectId,jdbcType=BIGINT},
#{item.requestPath,jdbcType=VARCHAR},
#{item.exeTime,jdbcType=TIMESTAMP},
#{item.advAnalysisId,jdbcType=BIGINT},
#{item.methodName,jdbcType=VARCHAR},
#{item.type,jdbcType=VARCHAR},
#{item.status,jdbcType=VARCHAR},
#{item.targetNode,jdbcType=VARCHAR},
#{item.inputJson,jdbcType=CLOB},
#{item.checkSum,jdbcType=VARCHAR}
)
</foreach>
;end;
</insert>