最近工作中使用mybatis自定义SQL时用到了foreach循环(oracle数据库),但是如下书写不好用:
<insert id="insertBatch" parameterType="java.util.List">
insert INTO
user_tb
(user_id,
user_name,
user_age)
<foreach collection="list" item="item" separator="union all">
select
#{item.userId},
#{item.userName},
#{item.userAge}
FROM dual
</foreach>
</insert>
经一位同事提醒,需要这么写:
<insert id="insertBatch" parameterType="java.util.List" useGeneratedKeys="false">
insert INTO
user_tb
(user_id,
user_name,
user_age)
<foreach collection="list" item="item" separator="union all">
select
#{item.userId},
#{item.userName},
#{item.userAge}
FROM dual
</foreach>
</insert>
oracle数据库使用自增主键需要使用序列或者其他方式,不支持自动生成。