在Oracle中,通过一个INSERT ALL语句批量插入数据

在Oracle中,通过一个INSERT ALL语句批量插入数据,第1张

Oracle:

INSERT ALL

INTO A(field_1,field_2) VALUES (value_1,value_2)

INTO A(field_1,field_2) VALUES (value_3,value_4)

INTO A(field_1,field_2) VALUES (value_5,value_6)

SELECT 1 FROM DUAL

在Mybatis中使用

<insert id="insertData" parameterType="java.util.List"

useGeneratedKeys="false">

INSERT ALL

<foreach item="item" index="index" collection="list">

INTO T_GZL_BZ

(

ID,

JGH,

JGMC,

DW,

JGLX,

BZLB,

JGZWLB,

EDGZL,

ZGGZL,

BZ,

CJRBH,

CJRXM,

CJSJ,

SFSZ

) VALUES

(

#{item.id,jdbcType=VARCHAR},

#{item.teacherId,jdbcType=VARCHAR},

#{item.teacherName,jdbcType=VARCHAR},

#{item.departmentId,jdbcType=VARCHAR},

#{item.teacherType,jdbcType=VARCHAR},

#{item.compilationCategory,jdbcType=VARCHAR},

#{item.jobCategory,jdbcType=VARCHAR},

#{item.ratedWorkload,jdbcType=NUMERIC},

#{item.maxWorkload,jdbcType=NUMERIC},

#{item.remark,jdbcType=VARCHAR},

#{item.creator,jdbcType=VARCHAR},

#{item.creatorName,jdbcType=VARCHAR},

#{item.createTime,jdbcType=DATE},

#{item.settings,jdbcType=VARCHAR}

)

</foreach>

SELECT 1 FROM DUAL

</insert>

mapper:

/**

* @param createList

* @return

*/

int insertData(@Param("list") List<WorkloadStandardDto>createList)

批量插入时,如果没有主键,一定要显式指定useGeneratedKeys为false,否则会报: SQL 命令未正确结束

useGeneratedKeys="true"时:

只需要把useGeneratedKeys="false"就好。

. 原因分析 当我们使用MyBatis的批量插入时候,在控制台会发现有很多的问好,这些都是自定义的变量值,当变量值超过64K时,Oracle就会抛出异常,主要原因就是

2. 解决方案 首先用java代码实现基本的批量逻辑代


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11354043.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存