在网上看了很多解决方法,有说sql语句之间要加空格,有说数据库连接后面要加批量插入的参数,另有去掉结尾分号的(这个有效,但是去掉分号还是报错),另有各种方法,试了都没有效,但是从mybatis log粘贴出来的sql在数据库软件就是能正常执行。
查阅了各种资料后发现,如果不用Java代码生成的主键或者selectedkey标签生成的主键,而用数据库函数生成的主键(例如我就是用SELECT sys_guid() as id FROM DUAL 生成主键),肯定要在insert标签上参加 useGeneratedKeys="false" 这个属性,加上之后立刻就不报错了!
花了半天才解决这个题目,肯定得记录下来
下面是我用的Oracle批量插入的语句,可以参考下
- <insert id="batchInsertPrdSlcPackTray" parameterType="PrdSlcPackTray" useGeneratedKeys="false">
- insert all
- <foreach item="item" collection="prdSlcPackTrayList" separator=" " close=" SELECT 1 FROM dual ">
- into prd_slc_pack_tray
- <trim prefix="(" suffix=")" suffixOverrides=",">
- id,
- create_time,
- <if test="item.createBy != null and item.createBy != ''">create_by,</if>
- update_time,
- <if test="item.createBy != null">update_by,</if>
- <if test="item.deleted != null and item.deleted != ''">deleted,</if>
- <if test="item.orgCode != null and item.orgCode != ''">org_code,</if>
- <if test="item.orgShopCode != null and item.orgShopCode != ''">org_shop_code,</if>
- <if test="item.trayCode != null and item.trayCode != ''">tray_code,</if>
- <if test="item.itemNum != null and item.itemNum != ''">item_num,</if>
- <if test="item.gradeCode != null and item.gradeCode != ''">grade_code,</if>
- <if test="item.subGradeCode != null and item.subGradeCode != ''">sub_grade_code,</if>
- <if test="item.resistivity != null">resistivity,</if>
- <if test="item.qty != null">qty,</if>
- <if test="item.status != null and item.status != ''">status,</if>
- <if test="item.printBy != null">print_by,</if>
- <if test="item.printTime != null">print_time,</if>
- <if test="item.printCount != null">print_count,</if>
- <if test="item.assembleBy != null">assemble_by,</if>
- <if test="item.assembleTime != null">assemble_time,</if>
- <if test="item.assembleRemarks != null">assemble_remarks,</if>
- <if test="item.disassembleBy != null">disassemble_by,</if>
- <if test="item.disassembleTime != null">disassemble_time,</if>
- <if test="item.disassembleRemarks != null">disassemble_remarks,</if>
- <if test="item.inspectBy != null">inspect_by,</if>
- <if test="item.inspectTime != null">inspect_time,</if>
- <if test="item.inspectRemarks != null">inspect_remarks,</if>
- <if test="item.entryBy != null">entry_by,</if>
- <if test="item.entryTime != null">entry_time,</if>
- <if test="item.entryRemarks != null">entry_remarks,</if>
- <if test="item.requisitionBy != null">requisition_by,</if>
- <if test="item.requisitionTime != null">requisition_time,</if>
- <if test="item.requisitionRemarks != null">requisition_remarks,</if>
- <if test="item.invalidBy != null">invalid_by,</if>
- <if test="item.invalidTime != null">invalid_time,</if>
- <if test="item.invalidReason != null">invalid_reason,</if>
- </trim>
- <trim prefix=" values (" suffix=")" suffixOverrides=",">
- (SELECT sys_guid() as id FROM DUAL),
- SYSTIMESTAMP,
- <if test="item.createBy != null and item.createBy != ''">#{item.createBy},</if>
- SYSTIMESTAMP,
- <if test="item.createBy != null">#{item.createBy},</if>
- <if test="item.deleted != null and item.deleted != ''">#{item.deleted},</if>
- <if test="item.orgCode != null and item.orgCode != ''">#{item.orgCode},</if>
- <if test="item.orgShopCode != null and item.orgShopCode != ''">#{item.orgShopCode},</if>
- <if test="item.trayCode != null and item.trayCode != ''">#{item.trayCode},</if>
- <if test="item.itemNum != null and item.itemNum != ''">#{item.itemNum},</if>
- <if test="item.gradeCode != null and item.gradeCode != ''">#{item.gradeCode},</if>
- <if test="item.subGradeCode != null and item.subGradeCode != ''">#{item.subGradeCode},</if>
- <if test="item.resistivity != null">#{item.resistivity},</if>
- <if test="item.qty != null">#{item.qty},</if>
- <if test="item.status != null and item.status != ''">#{item.status},</if>
- <if test="item.printBy != null">#{item.printBy},</if>
- SYSTIMESTAMP,
- <if test="item.printCount != null">#{item.printCount},</if>
- <if test="item.assembleBy != null">#{item.assembleBy},</if>
- <if test="item.assembleTime != null">#{item.assembleTime},</if>
- <if test="item.assembleRemarks != null">#{item.assembleRemarks},</if>
- <if test="item.disassembleBy != null">#{item.disassembleBy},</if>
- <if test="item.disassembleTime != null">#{item.disassembleTime},</if>
- <if test="item.disassembleRemarks != null">#{item.disassembleRemarks},</if>
- <if test="item.inspectBy != null">#{item.inspectBy},</if>
- <if test="item.inspectTime != null">#{item.inspectTime},</if>
- <if test="item.inspectRemarks != null">#{item.inspectRemarks},</if>
- <if test="item.entryBy != null">#{item.entryBy},</if>
- <if test="item.entryTime != null">#{item.entryTime},</if>
- <if test="item.entryRemarks != null">#{item.entryRemarks},</if>
- <if test="item.requisitionBy != null">#{item.requisitionBy},</if>
- <if test="item.requisitionTime != null">#{item.requisitionTime},</if>
- <if test="item.requisitionRemarks != null">#{item.requisitionRemarks},</if>
- <if test="item.invalidBy != null">#{item.invalidBy},</if>
- <if test="item.invalidTime != null">#{item.invalidTime},</if>
- <if test="item.invalidReason != null">#{item.invalidReason},</if>
- </trim>
- </foreach>
- </insert>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |