插入列表

oracle

insert into t_table_name(column1, column2, column_N) 
SELECT t.*
FROM(
  <foreach collection="list" item="item" index="index" separator="UNION ALL">
    SELECT 
    #{column1Val} as column1, 
    #{column2Val} as column2,
    #{columnNVal} as columnN 
    FROM DUAL 
  </foreach>  
) t

把列表中的值,放在列表中,通过 UNION ALL 链接。

注意:列表一次性不要太大,避免造成 GC。

mysql

相对来说就简单许多:

insert into t_table_name(column1, column2, column_N) 
VALUES
  <foreach collection="list" item="item" index="index" separator=",">
    (
    #{column1Val}, 
    #{column2Val},
    #{columnNVal} 
    )
  </foreach>  

oracle 如何一次性查询多个 seqId

查询 1 个

select SEQXXX.nextval FROM dual;

查询多个

查询方法如下:

select SEQXXX.nextval FROM (select 1 from t_tablename where rownum <= 10)

这样一次性可以查询 10 个。