功能需求:1.批量更新;2.数据库存在则不插入
经过:在网上查了N多方法,也试了很多次,都是不行,最后找到的一个方法,自己修改后可以了,严重怀疑别人的方法其实也可以,应该是我使用navicat连接oracle11g,导致某些关键字不识别。贴代码:
<!-- 1种写法 -->
<insert id="insertByBatch1" parameterType="java.util.List" useGeneratedKeys="false">
insert all
<foreach collection="list" item="item" index="index">
into xxx(id) values(#{item.id})
</foreach>
<!-- 必须加下面的查询 -->
SELECT 1 FROM DUAL
</insert>
<!-- 第2种写法 -->
<insert id="insertByBatch2" parameterType="java.util.List" useGeneratedKeys="false">
insert into xxx(id)
<foreach collection="list" item="item" index="index" separator="union all">
( select #{item} from dual
WHERE NOT EXISTS(SELECT id FROM xxx WHERE id= #{item.id})
)
</foreach>
</insert>
两种都试过了,没问题的
现在就差测试大批量数据插入了,一次插入上千条是否可以。