Mybatis批量插入Oracle数据库数(包含BLOB类型)

本文介绍了在Mybatis中如何处理Oracle数据库的BLOB类型数据进行批量插入,包括两种字段映射方法和遇到的问题,以及解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybatis批量插入Oracle数据库数(包含BLOB类型)

一、概述

批量插入,在Oracle中与MySQL有一定差异,尤其遇到CLOB\BLOB时,批量插入的sql语句有个很大差异,但是不包含时,基本一样,所以需要记录一下。

二、映射字段类型

有两种,我都是试过了,都可以用。

//大文本字段
private byte[] dwbzd;

法一:

<result property="dwbzd" column="DWBZD" jdbcType="BLOB" typeHandler="org.apache.ibatis.type.BlobTypeHandler" />

法二:

<result property="dwbzd" column="DWBZD" jdbcType="LONGVARBINARY"/>

三、SQL语句

sql语句与上边的映射方式没有关系,随便哪一个都行。一下语句大体相同,但是我在试用中,出现了问题,如果使用法二存入集合中存在空文本的时候,随后的实体就会报错。法一没有遇到同样的问题。
查阅后的解释是:使用了SELECT查询DUAL导致的后边的这个字段无法正确映射。
法一:

<foreach collection="list" item="photo" index="index" open="begin" close=";end;" separator=";">
	INSERT INTO TABLE_NAME
	(ID,DWBZD)
	values
	(#{photo.id, jdbcType=VARCHAR}, #{photo.dwbzd, jdbcType=BLOB}
	)
</foreach>

法二:
此方法如果

BEGIN
    INSERT INTO TABLE_NAME
    (ID,DWBZD)
    <foreach collection="list" item="photo" index="index" separator="UNION ALL">
      SELECT
      #{photo.id, jdbcType=VARCHAR}, #{photo.dwbzd, jdbcType=BLOB}
      FROM DUAL
    </foreach>
    ;END;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值