Chrisf Zhang 2023-05-08 21:17 采纳率: 100%
浏览 31
已结题

oracle,mybatisplus不支持批量插入

jeecg-boot框架,mybatisplus+oracle批量插入报错。
试了多种语法,均报错。

    <!-- 方式一 (begin insert into ... end;)不可用-->
    <insert id="setCodes" useGeneratedKeys="false">
        <foreach collection="list" item="zzCode" separator=" " open="begin" close="end;">
            INSERT INTO ZZ_CODE
            <trim prefix="(" suffix=")" suffixOverrides=",">
                <if test="zzCode.code != null">CODE</if>
                <if test="zzCode.zName != null">Z_NAME</if>
                <if test="zzCode.remark != null">REMARK</if>
            </trim>
            <trim prefix="values (" suffix=");" suffixOverrides=",">
                <if test="zzCode.code != null">#{zzCode.code}</if>
                <if test="zzCode.zName != null">utl_raw.cast_to_nvarchar2(#{zzCode.zName}</if>
                <if test="zzCode.remark != null">#{zzCode.remark}</if>
            </trim>
        </foreach>
    </insert>

    <!-- 方式二 (insert all into into ... select)不可用-->
    <insert id="setCodes2">
        INSERT ALL
        <foreach collection="list" item="zzCode">
            INTO ZZ_CODE(CODE, Z_NAME, REMARK) VALUES(#{zzCode.code}, utl_raw.cast_to_nvarchar2(#{zzCode.zName}), #{zzCode.remark})
        </foreach>
        select 1 from dual
    </insert>

    <!-- 方式三 (insert into select from select from...)可用-->
    <insert id="setCodes3">
        INSERT INTO ZZ_CODE(CODE, Z_NAME, REMARK)
        <foreach collection="list" item="zzCode" separator="union all" open="(" close=")">
            select #{zzCode.code}, utl_raw.cast_to_nvarchar2(#{zzCode.zName}), #{zzCode.remark} from dual
        </foreach>
    </insert>


前两种方式报错,第三种方式可用,但是实际业务代码中,多条数据中插入的字段数量不一致,用union会报错。

img


百度了这个参数,但是不会配置,写在配置文件里面与url并列,不起作用。
求指点。

  • 写回答

2条回答 默认 最新

  • Chrisf Zhang 2023-05-21 10:58
    关注

    我目前已经解决该问题,特在此记录一下。还是用的方法三,为了解决union的两侧参数数量不一致的问题,在mapper.xml里面写了标签,没有值的情况直接插入NULL。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月29日
  • 已采纳回答 5月21日
  • 修改了问题 5月8日
  • 创建了问题 5月8日

悬赏问题

  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Linux权限管理相关操作(求解答)
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表
  • ¥15 DbVisualizer Pro 12.0.7 sql commander光标错位 显示位置与实际不符
  • ¥15 求一份STM32F10X的I2S外设库
  • ¥15 android 打包报错
  • ¥15 关于stm32的问题
  • ¥15 ncode振动疲劳分析中,noisefloor如何影响PSD函数?