mybatis怎样批量插入数据到oracle,就算id自动增长问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis怎样批量插入数据到oracle,就算id自动增长问题相关的知识,希望对你有一定的参考价值。

需要在oracle中建立一个队列 代码如下:
create sequence SEQ_ID
minvalue 1
maxvalue 999999999
start with 0
increment by 1
cache 20;
查询下一个序列值就用 select SEQ_ID.Nextval from dual
查询当前序列值就用 select SEQ_ID.CURRVAL from dual
在insert中例子如下:
insert into tab_name(id)values(SEQ_ID.nextval);就可以了 当然 你也可以用lpad函数使id的位数一样 例如 lpad(SEQ_ID.nextval,10,'0');
~如果你认可我的回答,请及时点击【采纳为满意回答】按钮
~~手机提问的朋友在客户端右上角评价点【满意】即可。
参考技术A Oracle数据库中有一个可以自动增长的序列Sequences,在这里你可以建立对哪张表实现自动增长,调用方式:名称+.nextval,例如你的sequence名称是seq_test,调用就用seq_test.nextval,至于你说的批量插入,可以根据自己的需求来操作,如果是前台传来的值,可以通过for循环等
希望对你有帮助

Mybatis+Oracle --批量插入

Oracle自增长ID:

参考博客:Oracle数据库创建表ID字段的自动递增

mybatis语句

参考博客:点评 ibatis+oracle 批量插入的三种方法. 参考第三种

参考博客:mybatis中批量插入的两种方式(高效插入)

 

Oracle自增长ID,如下:

序列:

   CREATE SEQUENCE  "ENERGY"."ROLE_OBJECT_SEQ"  MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 150 NOCACHE  NOORDER  NOCYCLE ;
 

触发器:

CREATE OR REPLACE TRIGGER TRIGGER_ROLE_OBJECT 
BEFORE INSERT ON SYS_RIGHT_ROLE_OBJECT FOR EACH ROW
BEGIN
  SELECT ROLE_OBJECT_SEQ.nextval into :new.ROLE_OBJECT_ID from dual;
END;

 

Mybatis :

    <insert id="insertSelectiveByList" parameterType="java.util.List">
        insert into
        SYS_RIGHT_ROLE_OBJECT (ROLE_CODE,
        OBJECT_CODE,
        POLICY_ID, PERMISSION)
        <foreach collection="list" item="item" index="index"  open="(" close=")" separator="UNION ALL">
            SELECT #{item.roleCode} AS ROLE_CODE,
            #{item.objectCode} AS OBJECT_CODE,
            #{item.policyId} AS POLICY_ID, #{item.permission} AS PERMISSION  FROM dual
        </foreach>
    </insert>

 

以上是关于mybatis怎样批量插入数据到oracle,就算id自动增长问题的主要内容,如果未能解决你的问题,请参考以下文章

Java通过Mybatis实现批量插入数据到Oracle中

Java通过Mybatis实现批量插入数据到Oracle中

MyBatis 批量插入包含 BLOB 类型的数据到 Oracle 异常问题分析

MyBatis 批量插入包含 BLOB 类型的数据到 Oracle 异常问题分析

Mybatis+Oracle进行数据的批量插入和更新

mybatis怎么给oracle批量插入数据