有三种方式:
- 代码里面for循环
略 - mybatis BATCH模式插入
略 - 映射文件foreach方式插入
在映射文件中使用 标签
传入参数为该对象的list集合
<insert id="insertAuthRoleResourceBatch" parameterType="pengesoft.auth.authorize.AuthRoleResource">
insert into auth_role_resource(
Id,
RoleId,
ResourceId,
CreateTime,
UpdateTime
)values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.id,jdbcType=VARCHAR},
#{item.roleId,jdbcType=VARCHAR},
#{item.resourceId,jdbcType=VARCHAR},
#{item.createTime,jdbcType=TIMESTAMP},
#{item.updateTime,jdbcType=TIMESTAMP}
)
</foreach>
</insert>
第三种方式在oracle需要特殊处理
在oracle数据的mybatis批量插入
方式1:
<insert id="insertclobtest2" parameterType="com.inspur.tax.sjaqgl.sjflfjgl.data.ClobEntity">
INSERT ALL
<foreach collection="list" item="item" index="index">
INTO ainsertclob (id, blobtest) VALUES
(#{item.id}, #{item.blobtest})
</foreach>
select 1 from dual
</insert>
方式2:
<insert id="insertclobtest3" parameterType="com.inspur.tax.sjaqgl.sjflfjgl.data.ClobEntity">
INSERT INTO ainsertclob (id, blobtest)
<foreach collection="list" item="item" index="index" separator="union all">
SELECT #{item.id} ,#{item.blobtest} from dual
</foreach>
</insert>
本文介绍了MyBatis进行批量数据插入的三种方法:代码中for循环执行单条插入,使用BATCH模式插入,以及通过映射文件的foreach标签实现。特别指出,在Oracle数据库中进行批量插入时可能需要特殊处理。
1万+

被折叠的 条评论
为什么被折叠?



