java mybatis分批次批量插入

其他链接:

mysql模糊查询 like与locate效率
https://blog.csdn.net/qq_33745371/article/details/106673790

mybatis进行百万批量插入(我行),mysql进行百万批量插入(我不行)
https://blog.csdn.net/qq_33745371/article/details/106630478

mysql新建数据库字符集和排序规则
https://blog.csdn.net/qq_33745371/article/details/106459524

分批次批量插入

假设我们的List<Person>集合一共有1200条数据。分批次,一次500条。
Person类只有三个字段:id,name,age。

1.在service层写java代码,进行分批

具体步骤写在了下面的代码里,注释也有。


//假设personList中有1200条数据
//一次500条,分num次插入,num为3。
int num = (personList.size() / 500)+1;
//最后一次插入lastNumber条,取余数,lastNumber为200。
int lastNumber = personList.size() % 500;
//插入,会循环3次
for(int i=0;i<num;i++){
	//集合插入的起始位置
    int index = i*500;
    //集合插入的终止位置
    int end = (i+1)*500;
    //声明一个list集合,用于存放每次批量插入的数据
    List<Person> list;
    if(i==num-1){
	    //subList(index, end),list集合的下标从0开始,[index,end) subList包含index,不包含end。
        //最后一次插入 subList(index, index+lastNumber)<==>subList(1000, 1200)
        list = personList.subList(index, index+lastNumber);
    }else{
    	//非最后一次插入 subList(index, end)<==>subList(500*i, 500*(i+1))
        list = personList.subList(index, end);
    }
    //调用dao层的批量插入方法
    personDAO.addPersonList(list);

2.在dao层写接口

//dao层接口
int addObjectList(List<Object> list);

3.在dao.xml写批量插入

Person类只有三个字段:id,name,age。id为主键,自动递增,我们不需要写。
数据库的表名:person。
collection为传入的类型,这里我们传入的是list。
item为当前元素。
separator为分隔符

//批量插入
    <insert id="addObjectList">
        insert into person(name,age) values
        <foreach collection="list" item="person" separator=",">
            (#{person.name},#{person.age})
        </foreach>
    </insert>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qiweilong123456

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值