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会报错。
百度了这个参数,但是不会配置,写在配置文件里面与url并列,不起作用。
求指点。