简单明了直接贴代码再解释
ID自增长待会儿再讲
<insert id="insertByList" parameterType="java.util.List">
insert into NAME_LIST (ID,USERNAME,PASSWORD)
SELECT SEQ_NAME_LIST_ID.nextval as ID,a.* from(
<foreach collection="list" item="item" index="index" separator="UNION ALL">
SELECT
#{item.username,jdbcType=VARCHAR},
#{item.password,jdbcType=VARCHAR},
FROM dual
</foreach>)a
</insert>
这里的格式问题就暂且不改了,首先有的人可能会用以下的代码
这个代码你会发现插入一条正常,但是几条的list就炸了,因为Oracle里没有insert....value这样,只有select...from dual
接下来分析一下代码:
首先要注意parameterType的属性是List或者Map随你自己,其次要注意在select中的sequence后面加上 a.(当然取什么名字都行,不加这个只有一个id,别忘了最后也要加)。item这个项相当于List的属性,所以在后面属性前要加上item.
最后要注意下面的value中不要加id,因为前面有了。
最后讲讲Sequense(我也现学的)
CREATE SEQUENCE SEQ_MERCHANT_AUDIT
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE;
这就是创建,在Oracle中执行就好
SELECT SEQ_MERCHANT_AUDIT.nextval from dual
1、dual : 是oracle的虚拟表,不是真实存在的.
2、SEQ_MERCHANT_AUDIT : 这个是开发人员自己起的一个"序列"的名字,序列一般用于生成id号.
3、SEQ_MERCHANT_AUDIT.nextval 就是取序列的下一个值