mybatis oracle 批量新增
Posted lidada
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis oracle 批量新增相关的知识,希望对你有一定的参考价值。
假定场景:批量导入用户信息
一般批量新增使用 SELECT … INSERT INTO 和 INSERT INTO … SELECT
我们这次使用第二种
一、先建一张用户信息表模拟批量导入用户信息
create table u_info id NUMBER not null, info_no VARCHAR2(32) not null, name VARCHAR2(32) not null, birthday DATE, age NUMBER, create_date DATE not null -- 自动按天数分区 -- tablespace TBS_DATA --partition by range (create_date) interval (numtodsinterval(1, ‘DAY‘)) --(partition P20190101 values less than (TO_DATE(‘2019-01-01 00:00:00‘, ‘SYYYY-MM-DD HH24:MI:SS‘, ‘NLS_CALENDAR=GREGORIAN‘))) ; --create unique index IU_INFO_NO_DATE on u_info (info_no,create_date) tablespace TBS_IDX online local; -- Add comments comment on table u_info is ‘用户信息表‘; comment on column u_info.id is ‘主键‘; comment on column u_info.info_no is ‘用户编号‘; comment on column u_info.name is ‘姓名‘; comment on column u_info.birthday is ‘生日‘; comment on column u_info.age is ‘年龄‘; comment on column u_info.create_date is ‘创建时间‘;
二、mybatis xml(传入集合参数,建议批量数量控制在3000以内)
<insert id="insertBatch" parameterType="java.util.List"> /**UserInfoMapper.insertBatch*/ INSERT INTO u_info( id, info_no, name, birthday, age, create_date ) SELECT S.*, SYSDATE FROM( <foreach item="bean" index="index" collection="list" separator="UNION ALL"> SELECT #bean.id, jdbcType=DECIMAL, #bean.infoNo, jdbcType=VARCHAR, #bean.name, jdbcType=VARCHAR, #bean.birthday, jdbcType=TIMESTAMP, #bean.age, jdbcType=DECIMAL FROM DUAL </foreach> ) S </insert>
以上是关于mybatis oracle 批量新增的主要内容,如果未能解决你的问题,请参考以下文章