MyBatis实现Oracle的批量添加(ID自增长)

简单明了直接贴代码再解释

ID自增长待会儿再讲


insert into NAME_LIST (ID,USERNAME,PASSWORD)

SELECT SEQ_NAME_LIST_ID.nextval as ID,a.* from(

  SELECT
  #{item.username,jdbcType=VARCHAR},
  #{item.password,jdbcType=VARCHAR},
  FROM dual
)a


这里的格式问题就暂且不改了,首先有的人可能会用以下的代码


MyBatis实现Oracle的批量添加(ID自增长)_第1张图片
QQ图片20180426214116.png

这个代码你会发现插入一条正常,但是几条的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 就是取序列的下一个值

关于自增长,前面两个例子应该足够了,单个或者批量都可以实现了

你可能感兴趣的:(MyBatis实现Oracle的批量添加(ID自增长))