Mybatis批量插入大量数据

本文讲解了使用Mybatis进行大量数据插入时的注意事项,包括利用ignore关键字处理单条插入失败情况,通过foreach循环批量插入list集合,以及针对PostgreSql数据库的特殊优化策略,如分页拆分list避免参数超出范围错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用Mybatis插入大量数据的注意事项:

<insert id="insetList" parameterType="java.util.List"  >
    insert ignore into application (proposalno, policyno
    )
    <foreach collection="list" item="item" index="index" separator=",">
      ( #{item.proposalno},
      #{item.policyno}
        )
    </foreach>
  </insert>

1.使用ignore关键字,单条插入失败时会跳过。
2.使用foreach关键字,可以循环插入的list,list里的每条记录配置名item。
3.如果插入PostgreSql,由于数据量过大,可能报错:Tried to send an out-of-range integer as a 2-byte。
因为它的sql语句是insert into table(a,b) values (?,?), (?,?) (?,?) (?,?) (?,?)…这样的。所以带入的参数过
多会报错。需要拆分list,按照分页来写。
下面是拆分原list为分页list的方法。

private void splitList(){
        List<List<T>> tmplist=new ArrayList<>();
        for (int i = 0; i < pageCount-1; i++) {
            //开始位置
            int startIndex= (int) (i*this.perPage);
            //结束位置
            int endIndex= (int) ((i+1)*this.perPage<this.totalCount?(i+1)*this.perPage:this.totalCount);
            tmplist.add(this.data.subList(startIndex,endIndex));

        }
        this.newPageList=tmplist;

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值