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>

 

转载于:https://www.cnblogs.com/lidada/p/11384540.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值