这里自己写了个对集合按一批的数量进行分批操作的分页bean,见PagenationUtil如下:

package com.util;
import java.util.List ; /**
* @author kyoxue
* @date 2018年05月31日
* @param <E> 集合存放的实体类型
*/
public class PagenationUtil<E> {
/**
* 分页的集合
*/
private List<E> list = null;
/**
* 当前页
*/
private int page =0;
/**
* 每页大小
*/
private int pageSize =0;
/**
* 集合总条数
*/
private int totalCount =0;
/**
* 总页数
*/
private int totalPage =0;
/**
* @param list 数据集合
* @param pageSize 分页大小
*/
public PagenationUtil(List<E> list,int pageSize){
this.list = list ;
this.pageSize = pageSize ;
this.totalCount = ((null == list || list.size() == 0)?0:list.size());
this.totalPage = totalCount>0?((totalCount + pageSize - 1) / pageSize):0;
}
public List<E> getPageList(){
if (totalCount == 0) {
return null;
}
if (pageSize == 0) {
return null;
}
int total = getTotalPage();
int current = getPage();
if (current > total) {
return null;
}
if (current <= 0) {
return null;
}
int start = pageSize*(current-1);
if (current == total) {
int leftLen = totalCount%pageSize;
if (leftLen>0) {
return list.subList(start, start+leftLen);
}
}
return list.subList(start, start+pageSize);
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getTotalPage(){
return this.totalPage;
}
}

mybatis分批插入(mapper接口与sql实现示例):

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.dao.XxxMapper" > <insert id="insertBatch" parameterType="java.util.ArrayList">
insert into
t_xx(xx,yy)
values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.xx},#{item.yy})
</foreach>
</insert>
</mapper>
public interface XxxMapper {
void insertBatch(List<Xx> list);
}

使用自己写的PagenationUtil,对数据集合进行分批执行sql:

PagenationUtil<XX> pageutil = new PagenationUtil<Xx>(集合, 批次数量);
int totalPage = pageutil.getTotalPage();
for (int i = 1; i < totalPage+1; i++) {
pageutil.setPage(i);
List<Xx> each = pageutil.getPageList();
xxMapper.insertBatch(each);
}

mybtais分批insert的更多相关文章

  1. 【OCP、OCM、高可用等】小麦苗课堂网络班招生简章(从入门到专家)--课程大纲

    [OCP.OCM.高可用等]小麦苗课堂网络班招生简章(从入门到专家)--课程大纲 小麦苗信息 我的个人信息 网名:小麦苗 QQ:646634621 QQ群:618766405 我的博客:http:// ...

  2. 【OCP|OCM】Oracle培训考证系列

     [OCP|OCM]Oracle培训考证系列  我的个人信息 网名:小麦苗 QQ:646634621 QQ群:618766405 我的博客:http://blog.itpub.net/26736162 ...

  3. 省市区三级-sql脚本:

    /*Navicat MySQL Data Transfer Source Server : moiraiSource Server Version : 50631Source Host : 192.1 ...

  4. [Oracle] Bulk Insert Data

    命名空间:Oracle.DataAccess.Client 组件:Oracle.DataAccess.dll(2.112.1.0) ODP.NET 版本:ODP.NET for .NET Framew ...

  5. EF架构~数据分批批量提交

    回到目录 对于大数据量提交,包括插入,更新和删除,我始终不建议用EF自带的方法,因为它会增加与数据库的交互次数,一般地,EF的一个上下文在提交时会打开一个数据连接,然后把转换成的SQL语句一条一条的发 ...

  6. JDBC批量Insert深度优化(有事务)

    环境: MySQL 5.1 RedHat Linux AS 5 JavaSE 1.5 DbConnectionBroker 微型数据库连接池   测试的方案: 执行10万次Insert语句,使用不同方 ...

  7. Bulk Insert Data

    Bulk Insert Data 命名空间:Oracle.DataAccess.Client 组件:Oracle.DataAccess.dll(2.112.1.0) ODP.NET 版本:ODP.NE ...

  8. SQL语句 insert into 语句的写法

    方式1: INSERT INTO t1(field1,field2) VALUE('001','002'); 最好的做法明确插入的每一列,列于查错,而且漏列的几率会降低! 方式2: INSERT IN ...

  9. 数据操纵:SELECT, INSERT, UPDATE, DELETE

    SELECT 句法 SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE ...

随机推荐

  1. shell命令 安装软件包

    软件包分类 Debian Linux首先提出  “软件包”   的管理机制——Deb软件包 Redhat Linux基于这个理念推出了自己的软件包管理机制——Rpm软件包 安装包格式: filenam ...

  2. C++ 系列:交换两个数字

    1. 创建中间变量 这是最快也是最简单的办法,例如: #include<stdio.h> int main(){ int a=10; int b=20; int temp; printf( ...

  3. [JZOJ6271] 2019.8.4【NOIP提高组A】锻造

    题目 题目大意 武器的每个级别有固定的两种属性\(b_i\)和\(c_i\) 可以用\(a\)的代价得到一把\(0\)级的武器. 可以将\(x\)级武器和\(y=\max(x-1,0)\)级武器融合锻 ...

  4. Pipe进程之间的通信

    #_author:来童星#date:2019/12/11#Pipefrom multiprocessing import Process, Pipedef f(conn): conn.send([42 ...

  5. hadoop新增新数据节点和退役数据节点

    新增数据节点 0. 需求随着公司业务的增长,数据量越来越大,原有的数据节点的容量已经不能满足存储数据的需求,需要在原有集群基础上动态添加新的数据节点.1. 环境准备 (1)在hadoop03主机上再克 ...

  6. c++ const的用法

    1.修饰成员变量 int value=0; int *p=&value; const int *p_c=&value;//指针指向常量,但是指针所指向的地址可以修改(int const ...

  7. SGLTE/SVLTE、CSFB、SRVCC概念

    SGLTE:Simultaneous GSM and LTE,手机可以同时驻留在GSM和LTE网络中,打电话通过GSM网络进行,数据业务通过LTE网络进行.​ SVLTE:Simultaneous V ...

  8. 小程序开发之wepy框架

    ps 本教程使用wepy 1.7+以上的版本 wepy-让小程序支持组件化开发的框架 鹅厂出品,用于开发自家产品的框架还是很良心的,框架设计思路上参照vue,但不是全部照搬,这点要注意. 对微信小程序 ...

  9. 2019 Multi-University Training Contest 7 Kejin Player Final Exam

    Kejin Player 期望DP 题意: 初始等级为1,每一级有四个参数 r , s , x , a . 每一级有一个概率p=r/s花费a的代价升级到下一级,失败可能会倒退到x级 设从 l 到 r ...

  10. 面试系列15 如何保证Redis的高并发和高可用

    就是如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了,redis高可用 我这里会选用我之前讲解 ...