/**
* 大批量插入,数据分页处理
*
* @param tableName 临时表名称
* @param mapHead 临时表属性 Map,key = 临时表字段属性, value = 具体值。此处 value 没有使用
* @param mapList 临时表的大批量数据
*/
private void pageDate(String tableName, Map<String, Object> mapHead, List<HashMap<String, Object>> mapList) {

//测试(大批量插入):条数-耗时:6300条-2s,16800条-5s,24000条-7s 67300条-18s
for (int i = 0, j = 0, amount = 3000; i < mapList.size(); i += amount) {
j = i + amount;
//amount可取值3000/5000/10000/。。。测看大批量效果。
try {
if (j < mapList.size()) {
insertBatchList(tableName, mapHead, mapList.subList(i, mapList.size()));
} else {
insertBatchList(tableName, mapHead, mapList.subList(i, mapList.size()));
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}

}

 
/**
* 批量插入数据
*
* @param tableName 临时表名称
* @param mapHead 临时表属性 Map,key = 临时表字段属性, value = 具体值。此处 value 没有使用
* @param list 临时表分页后的批量数据
*/
private void insertBatchList(String tableName, Map<String, Object> mapHead, List<HashMap<String, Object>> list) {
HashMap<String, Object> map = new HashMap<>();
map.put("tableName", tableName);
map.put("mapHead", mapHead);
map.put("list", list);
reportAllSqlMapper.insertBatchTableListDynamic(map);
}


mybatis mapper 层接口
/**
* 批量插入数据
* @param map
*/
void insertBatchTableListDynamic(@Param("map")HashMap<String,Object> map);


mybatis xml
<insert id="insertBatchTableListDynamic" parameterType="java.util.HashMap">
insert into
${map.tableName}
(
<foreach collection="map.mapHead" index="key" item="value"
separator=",">
`${key}`
</foreach>
)
values
<foreach collection="map.list" item="line" separator=",">
(
<foreach collection="line" index="key" item="value"
separator=",">
#{value}
</foreach>
)
</foreach>
</insert>


 

mybatis 操作 mysql 大批量插入,数据分页处理的更多相关文章

  1. MySQL大批量插入数据

    MySQL大批量插入数据 1. 对于Myisam类型的表,可以通过以下方式快速的导入大量的数据. ALTER  TABLE  tblname  DISABLE  KEYS; loading  the  ...

  2. Oracle、MySql、SQLServer数据分页查询

    看过此博文后Oracle.MySql.SQLServer 数据分页查询,在根据公司的RegionRes表格做出了 SQLserver的分页查询语句: 别名.字段 FROM( SELECT row_nu ...

  3. Oracle、MySql、SQLServer 数据分页查询

    最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一). mysql的分页查询 mysql的分页查询是最简单的,借 ...

  4. Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小demo mysql循环插入数据、生成随机数及CONCAT函数 .NET记录-获取外网IP以及判断该IP是属于网通还是电信 Guid的生成和数据修整(去除空格和小写字符)

    Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer   Advanced Installer :Free for 30 da ...

  5. 使用mybatis向oracle数据库插入数据异常

    遇到了使用mybatis向oracle数据库插入数据异常的问题, 具体的报错如下:org.springframework.jdbc.UncategorizedSQLException: ### Err ...

  6. mybatis oracle mysql 批量插入时的坑爹问题--需谨记

    mybatis oracle mysql 批量插入一.oracle的批量插入方式insert into db(id, zgbh, shbzh) select '1', '2', '3' from du ...

  7. 转Oracle、MySql、SQLServer 数据分页查询

    最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一). mysql的分页查询 mysql的分页查询是最简单的,借 ...

  8. MySQL数据库插入数据出现 ERROR 1526 (HY000): Table has no partition for value xxx

    MySQL数据库插入数据出现ERROR 1526 (HY000): Table has no partition for value xxx工作的时候发现无法插入数据,报错:ERROR 1526 (H ...

  9. Python向mysql数据库插入数据

    一.向表tcolor中插入数据的主要流程如下: import datetimeimport pymysql.cursorsconnection = pymysql.connect(host='loca ...

  10. python,java操作mysql数据库,数据引擎设置为myisam时能够插入数据,转为innodb时无法插入数据

    今天想给数据库换一个数据引擎,mysiam转为 innodb 结果 python 插入数据时失败,但是自增id值是存在的, 换回mysiam后,又可以插入了~~ 想换php插入试试,结果php数据引擎 ...

随机推荐

  1. 快速上手 | Datavines 两表值比对规则用法

    Datavines 是一站式开源数据可观测性平台,提供元数据管理.数据概览报告.数据质量管理,数据分布查询.数据趋势洞察等核心能力,致力于帮助用户全面地了解和掌管数据,让您做到心中有数. 场景 比较某 ...

  2. 用Python操控斑马打印机的技术总结

    前言 由于之前产品打印的标签为人工输入,可能存在信息错误且不适合大批量操作.所以我进行了前期的研究和总结,完成了任务,并这里做下技术总结,方便后面的人进行开发. 技术总结 斑马打印机的坑 官网:htt ...

  3. C++之函数的分文件编写

    从黑马程序员的c++课里学到的函数的分文件编写 函数的分文件编写 作用:让代码结构更加清晰 函数分文件编写一般有4个步骤 1,创建后缀名为.h的头文件 2,创建后缀名为.cpp的源文件 3,在头文件中 ...

  4. go build怎么使用

    go build 是 Go 语言编译器的一个命令,用于将 Go 源代码文件编译成可执行的二进制文件.它是 Go 语言开发过程中常用的一个命令.以下是 go build 的基本使用方法: go buil ...

  5. linux 查看进程使用的内存大小

    你可以使用 ps 命令结合 grep 命令来查看进程使用的内存大小.以下是示例代码: ps aux | grep <进程名> 这个命令会列出所有匹配 <进程名> 的进程,并显示 ...

  6. linux系统下python中的tkinter库

    打开终端,输入如下命令: sudo apt-get update sudo apt-get install python3-tk

  7. cesium中限制地图浏览范围

    https://blog.csdn.net/qq_42740164/article/details/119375782?ops_request_misc=%257B%2522request%255Fi ...

  8. DDD实践:实现基于快照机制的变更追踪

    王有志,一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群:共同富裕的Java人 去年我们在重构项目中落地了DDD,当时花了点时间研究了下阿里巴巴大淘宝技术发布的<阿里技术专家详解 ...

  9. [ABC132D] Blue and Red Balls

    2023-01-16 题目 题目传送门 翻译 翻译 难度&重要性(1~10):3 题目来源 AtCoder 题目算法 dp 解题思路 因为蓝球的数量是固定的,题目让我们求,在取 \(i\) 次 ...

  10. 【目标检测】RCNN算法实现

    一.前言 RCNN(Regions with CNN features)算法由Ross Girshick在2014年的论文"Rich feature hierarchies for accu ...