/**
* 大批量插入,数据分页处理
*
* @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. 现代C++(Modern C++)基本用法实践:五、智能指针

    概述 c++效率较高的一个原因是我们可以自己定制策略手动申请和释放内存,当然,也伴随着开发效率降低和内存泄漏的风险.为了减少手动管理内存带来的困扰,c++提出了智能指针,可以帮助我们进行内存管理,有三 ...

  2. Object.equals 和 String.equals的区别

    一.  源码展示: 1. Object.equals: ①引用类型地址值比较,直接返回结果:true || false public class Object { public boolean equ ...

  3. Java8 函数式编程stream流

    1.初始环境准备 ​ 场景:现在有一个公司,公司部门有一级部门,二级部门甲和二级部门乙(其中二级部门甲和二级部门乙是一级部门的子部门), 一级部门下面有有001号员工小明,二级部门甲下面有002号员工 ...

  4. ValueError: Max value is 14 解决方案

    方案一(有时会失效): 将EXCEL文件中的格式全部清除即可.最好是复制,然后只粘贴值. 方案二(指定引擎): data = pd.read_excel(path, engine="open ...

  5. SQL-去除最大值与最小值求均值的问题

    背景 今天有同事问我一道关于数据库SQL的面试题,我刚开始随便给了一个思路,后来思索发现这个思路有漏洞,于是总结下来,仅供参考. 问题: 薪水表中是员工薪水的基本信息,包括雇员编号,和薪水,查询除去最 ...

  6. LeetCode 周赛上分之旅 # 37 多源 BFS 与连通性问题

    ️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问. 学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越 ...

  7. springboot整合nacos和dubbo

    0. 源码 源码: gitee 1. 版本 java: 1.8.0_281 nacos: 2.1.2 2. 创建项目 创建一个简单的springboot或者maven项目, 或者代码库(gitee/g ...

  8. Trino418版本动态加载catalog不需要重启集群修改思路及实现

          熟悉Trino 的同学应该都知道Trino新增.删除 catalog 都需要重启集群,这个生产环境里如果需要频繁增加数据源的场景是非常不友好的操作.     网上关于动态加载Catalog ...

  9. 渗透小tis

    知己知彼,百战不殆 1.如果提示缺少参数,如{msg:params error},可尝使用字典模糊测试构造参数,进一步攻击. 2.程序溢出,int最大值为2147483647,可尝试使用该值进行整数溢 ...

  10. 美团面试拷打:ConcurrentHashMap 为何不能插入 null?HashMap 为何可以?

    周末的时候,有一位小伙伴提了一些关于 ConcurrentHashMap 的问题,都是他最近面试遇到的.原提问如下: 整个提问看着非常复杂,其实归纳来说就是两个问题: ConcurrentHashMa ...