参考 当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>