mybatis的批量操作其实是一个很简单的东西,但是涉及到序列的写法不太一样,一般使用序列的是主键id,如果使用比较普遍的添加方法就会导致 违反唯一约束错误
博主比较菜鸡因为这个卡了好久,记录一下
1、批量添加
(1)、第一种方法
<insert id="saveAttributeInfo" parameterType="java.util.List" useGeneratedKeys="false">
insert into scada_attribute(attrId,attType,state,attTitle,createUseId,createTime,organCode,parentOrganCode)
select SCADA_ATTRIBUTE_GET_ID.Nextval,a.* from(
<foreach collection="list" item="item" separator="union all">
select
#{item.attType},#{item.state},#{item.attTitle},#{item.createUseId},to_date(#{item.createTime},'yyyy-mm-dd hh24:mi:ss'),#{item.organCode},#{item.parentOrganCode}
from dual
</foreach>
) a
</insert>
注:一定要在insert标签中加入useGeneratedKeys="false",如果不加则会报如下错误:ORA-00933: SQL 命令未正确结束