IBatis插入注意,数据量比较多的花,需要分批插入,策略是dao里面控制插入批次,mapper里面批量插入即可

@Override
public Long insertBatch(List<WaiterDO> list) throws Exception {
//每批次插入数量
int batchCount = 3;
//游标
int index = 0;
//批次
int batchNum = 1;
for(;;){
if(index+batchCount>=list.size()){
//一次可全部插入
getSqlMapClientTemplate().insert("waiter.insertBatch"
, list.subList(index,list.size()));
System.out.println("第"+batchNum+"批:插入"+(list.size()-index)+"条");
break;
}else {
//需要多次插入
List<WaiterDO> waiterDOS = list.subList(index, index + batchCount);
getSqlMapClientTemplate().insert("waiter.insertBatch"
, waiterDOS);
index = index+batchCount;
System.out.println("第"+batchNum+"批:插入"+batchCount+"条");
}
batchNum++;
}
System.out.println("over~,总共插入"+list.size()+"条,插入了"+batchNum+"批");
return null;
}

注意,IBatis批量插入和Mybatis语法不一样,开发的时候由于关闭idea的自动提示,不知道语法错误,被坑了一两小时。

<insert id="waiter.insertBatch" parameterClass="java.util.List">
<![CDATA[
insert into rc_waiter (
account,
emp_id,
data_time
)
values
]]>
<iterate conjunction ="," >
<![CDATA[
(
now(),
now(),
#hello[].account#,
#hello[].empId#,
#hello[].dataTime#
)
]]>
</iterate>
</insert>

试了下mapper里面循环内部的对象(hello)引用似乎可以随意命名

IBatis批量插入数据的更多相关文章

  1. Java使用iBatis批量插入数据到Oracle数据库

    Java使用iBatis批量插入数据到Oracle数据库 因为我们的数据跨库(mysql,oracle),单独取数据的话需要遍历好多遍,所以就想着先从mysql数据库中取出来的数据然后在oracle数 ...

  2. IBatis 批量插入数据

    sql语句 <!--批量插入待收流水--> <insert id="BatchInsertOrder" parameterClass="ArrayLis ...

  3. IBatis 批量插入数据之SqlBulkCopy

    public void AddLetters(IList<int> customerIds, string title, string content, LetterEnum.Letter ...

  4. asp.net Ibatis.net 批量插入数据ORACLE

    在开发中我们有时会遇到需要批量插入数据,最普通的就是每次 插入一条.但是当数据量大道一定的地步会很影响性能.下面例子示范了ibatis.net批量插入 ibatis.net 的XML文件里面使用ite ...

  5. mybatis批量插入数据到oracle

    mybatis 批量插入数据到oracle报 ”java.sql.SQLException: ORA-00933: SQL 命令未正确结束“  错误解决方法 oracle批量插入使用 insert a ...

  6. ibatis 批量插入

      ibatis 批量插入 CreationTime--2018年7月2日10点21分 Author:Marydon 1.说明 基于oracle的sql语句 2.主键id有默认值,比如:sys_gui ...

  7. C#批量插入数据到Sqlserver中的四种方式

    我的新书ASP.NET MVC企业级实战预计明年2月份出版,感谢大家关注! 本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的 ...

  8. .Net批量插入数据到SQLServer数据库,System.Data.SqlClient.SqlBulkCopy类批量插入大数据到数据库

    批量的的数据导入数据库中,尽量少的访问数据库,高性能的对数据库进行存储. 采用SqlBulkCopy来处理存储数据.SqlBulkCopy存储大批量的数据非常的高效,将内存中的数据表直接的一次性的存储 ...

  9. sql 中的Bulk和C# 中的SqlBulkCopy批量插入数据 ( 回顾 and 粗谈 )

    通常,我们会对于一个文本文件数据导入到数据库中,不多说,上代码. 首先,表结构如下.   其次,在我当前D盘中有个文本文件名为2.txt的文件. 在数据库中,可以这样通过一句代码插入. Bulk in ...

随机推荐

  1. git 使用经验与技巧总结 (不断更新中)

    git 使用技巧总结   说明: 本地repo已经有啦,对应的远程repo 为tiger, 本地分支为master.    问题一: 当拉取代码的remote repo仓库为tiger, 而现在要将修 ...

  2. HTML5应用程序缓存实现离线Web网页或应用

    HTML5应用程序缓存和浏览器缓存的区别.(有些)浏览器会主动保存自己的缓存文件以加快网站加载速度.但是要实现浏览器缓存必须要满足一个前提,那就是网络必须要保持连接.如果网络没有连接,即使浏览器启用了 ...

  3. php网站被挂木马修复方法总结

    在linux中我们可以使用命令来搜查木马文件,到代码安装目录执行下面命令 代码如下 复制代码 find ./ -iname "*.php" | xargs grep -H -n & ...

  4. FreeSWITCH媒体转码配置

    一.说明: FreeSWITCH版本1.6.13二.测试准备 软电话A的语音编码只配置iLBC:软电话B的语音编码只配置PCMU: A->B,编码协商失败,收到488消息. 三.修改文件vars ...

  5. 【转载】Spring Cache介绍

    原文地址:http://www.cnblogs.com/rollenholt/p/4202631.html 缓存是实际工作中非常常用的一种提高性能的方法, 我们会在许多场景下来使用缓存. 本文通过一个 ...

  6. Android应用的自动更新模块

    软件的自动更新一般都与Splash界面绑定在一起, 由于需要维护的软件界面很复杂, 一个Activity中嵌入ViewPager, 并且逻辑比较复杂, 索性重新写一个Activity, 现在的软件都很 ...

  7. Web安全之XSS(Cross Site Scripting)深入理解

    XSS的含义 XSS(Cross Site Scripting)即跨站脚本.跨站的主要内容是在脚本上. 跨站脚本 跨站脚本的跨,体现了浏览器的特性,可以跨域.所以也就给远程代码或者第三方域上的代码提供 ...

  8. Flowable 的event介绍

    1 事件分为两种,一种是抛出:当流程执行到这时,抛出一个事件:另一种是捕获:当流程执行到这时,他就会等待一个事件的发生. 一个事件需要有事件定义,否则不会做任何“特殊”的事.对于一个流程实例,一个开始 ...

  9. HEVC (H.265)介绍(转)

    [Liupin]: 这是一篇简单介绍H.265文章,我接触和开发H.265二年来,H.265技术在行业内接收速度比H.264快多了,现在国际和国内各大公司都在进行H.265应用,不管是IC设计还是H. ...

  10. mysql 主从同步遇到的问题(1032)

    event_scheduler对主从的影响: 1 对于已经存在的主从, 新建立events没有影响. 2 对于新建立的主从,如果有events ,那么需要在从库上把event_scheduler设置为 ...