mybatis针对oracle和mysql批量插入的解决方案:
Xml代码
oracle:
<insert id="batchSave" parameterType="java.util.List">
Insert into table_name(id,name)
<foreach collection="list" item="obj" separator="union all">
(select #{obj.id},#{obj.name} from dual)
</foreach>
</insert>
mysql:
<insert id="batchSave" parameterType="java.util.List">
Insert into table_name(id,name) values
<foreach collection="list" item="obj" separator=",">
(#{obj.id},#{obj.name})
</foreach>
</insert>
注意:在这里可能会遇到了一个巨坑,先提出来,以防大家被坑:
有时候在万事俱备后,执行控制台会报以下错误
Mybatis,oracle,ORA-00933: SQL 命令未正确结束
原因是:
<insert id="insert_" useGeneratedKeys="false">
</insert>
批量插入时,如果没有主键,一定要显式指定useGeneratedKeys为false,否则会报: SQL 命令未正确结束