批量insert示例

DROP TABLE test1 PURGE
/
DROP TABLE test2 PURGE
/
CREATE TABLE test1 AS SELECT * FROM Dba_Objects
/
CREATE TABLE test2 AS SELECT * FROM test1 WHERE 1=2
/
DECLARE
  v_limit           INT := 10000;
  v_idx             INT := 0;
  bl_notfound       BOOLEAN;
  v_object_id       NUMBER;
  v_object_name     VARCHAR2(30);
  object_id_table   dbms_sql.number_table;
  object_name_table dbms_sql.varchar2_table;
  CURSOR cur_test1 IS
    SELECT object_id, object_name FROM test1;
BEGIN
  DELETE FROM test2;
  COMMIT;
  OPEN cur_test1;
  LOOP
    FETCH cur_test1
      INTO v_object_id, v_object_name;
    bl_notfound := cur_test1%NOTFOUND;
    /*分条件赋值*/
    IF MOD(v_object_id, 7) = 0 THEN
      v_idx := v_idx + 1;
      object_id_table(v_idx) := v_object_id;
      object_name_table(v_idx) := v_object_name;
    END IF;
    /*到达限定条数就insert*/
    IF bl_notfound OR v_idx >= v_limit THEN
      v_idx := 0;
      FORALL i IN 1 .. object_id_table.count
        INSERT INTO test2
          (object_id, object_name)
        VALUES
          (object_id_table(i), object_name_table(i));
      COMMIT;
      object_name_table.delete;
      object_id_table.delete;
      IF bl_notfound THEN
        EXIT;
      END IF;
    END IF;
  END LOOP;
END;
/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis 提供了 `batch` 批处理操作,可以在一次数据库连接中执行多个 SQL 语句。在 MyBatis 中,批处理操作可以通过 `SqlSession` 的 `insert` 方法实现。具体来说,可以先将多个对象添加到一个列表中,然后将该列表作为参数传递给 `insert` 方法。 以下是一个使用 MyBatis 进行批量插入的 Java 示例代码: ```java public void batchInsert(List<User> userList) { SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH); // 打开批处理模式 try { UserMapper mapper = sqlSession.getMapper(UserMapper.class); for (User user : userList) { mapper.insert(user); // 添加到批处理中 } sqlSession.commit(); // 执行批处理 } catch (Exception e) { sqlSession.rollback(); // 回滚事务 throw e; // 抛出异常,由上层代码处理 } finally { sqlSession.close(); // 关闭 Session } } ``` 在上面的示例中,我们首先使用 `sqlSessionFactory.openSession(ExecutorType.BATCH)` 方法打开一个批处理模式的 `SqlSession`。接着通过 `getMapper` 方法获取 `UserMapper` 接口实例,然后遍历传入的用户列表,将每个用户对象添加到批处理中。最后调用 `sqlSession.commit()` 方法执行批处理操作。 需要注意的是,在批处理模式下,MyBatis 会将多个 SQL 语句合并成一个批处理操作,因此在批处理操作之前必须先将所有要执行的 SQL 语句添加到批处理中。另外,批处理操作需要在事务中执行,因此在执行批处理操作之前需要先打开事务,并在批处理操作执行完成后提交或回滚事务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值