错误展示:
<insert id="batchInsertSelective" useGeneratedKeys="false">
INSERT ALL
<foreach collection="list" item="user">
insert into t_user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="user.userName!= null">
user_name,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="user.userName!= null">
#{soInvoiceDetail.parentId,jdbcType=DECIMAL},
</if>
</trim>
</foreach>
SELECT 1 FROM DUAL
</insert>
修改错误:
<insert id="batchInsertSelective" useGeneratedKeys="false">
INSERT ALL
<foreach collection="list" item="user">
into t_user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="user.userName!= null">
user_name,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="user.userName!= null">
#{soInvoiceDetail.parentId,jdbcType=DECIMAL},
</if>
</trim>
</foreach>
SELECT 1 FROM DUAL
</insert>
总结:在foreach里边使用了insert,与外层的insert all 冲突,导致报 ORA-00905: 缺失关键字 的错误,细心一点就行了