由于想批量入库提升效率,最近实现了ibatis的批量插入,结果一直报错 :StringIndexOutOfBoundsException ,原来是value中的格式不正确。

本人邮箱:techqu@163.com,欢迎讨论

正确写法示例:

RecieveDataRecordsDao

   public long iterate_insert(List<RecieveDataRecordsDB> db) {
Object obj = getSqlMapClientTemplate().insert("iterate_insert", db);
if (obj == null) { return 0; } return (Long) obj;
}
mapper.xml

<insert  id ="iterate_insert"   parameterClass ="java.util.List">

insert into recieve_data_records (trader_serial_id,phone_num,data_volume,timestamp,lasttime,errorcount,errordesc,errorchannel,type,operator,provinceId,appid) values      

      <iterate  conjunction =","  >
(#db[].trader_serial_id:VARCHAR#,#db[].phone_num:BIGINT#,#db[].data_volume:BIGINT#,#db[].timestamp:BIGINT#,#db[].lasttime:BIGINT#,#db[].errorcount:INTEGER#,#db[].errordesc:VARCHAR#,#db[].errorchannel:INTEGER#,#db[].type:INTEGER#,#db[].operator:INTEGER#,#db[].provinceid:VARCHAR#,#db[].appid:VARCHAR#)
</iterate> </insert>

---------------------

注意事项:
1. value内的值,必须按照 #传入参数名[].属性名:类型 这个格式写。否则会报 StringIndexOutOfBoundsException 异常。方括号将参数标记为List,否则解析器会简单的将List输出成String。我检查半天才发现原来是格式不正确引起的
2. 如果传入的参数类型是List,则不需要在iterate上写property属性
---------------------

ibatis使用iterate实现批量插入insert正确写法的更多相关文章

  1. 24单行插入与批量插入-insert(必学)-天轰穿sqlserver视频教程

    大纲:insert语句,简单插入数据与批量插入数据 为了冲优酷的访问量,所以这里只放优酷的地址了,其实其他网站还是都传了的哈. 代码下载http://www.cnthc.com/?/article/1 ...

  2. mybatis批量插入insert时报错

    报错信息: 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确.此 RPC 请求中提供了过多的参数.最多应为2100 错误分析: 由于mybatis拼接的sql语句参数过多导致 解决办法 ...

  3. ibatis实现Iterate的使用

    <iterate property="" /*可选, 从传入的参数集合中使用属性名去获取值, 这个必须是一个List类型, 否则会出现OutofRangeException, ...

  4. oracle 在xml中批量插入,批量修改及多组条件查询

    最近公司用ibatis开发项目,本来可以用存储过程处理批量插入,批量修改及多组条件查询:但由于使用模块相对较小,暂时就在xml中配置,以前没有在xml做过类似处理,有必要记录一下:好了,代码如下: & ...

  5. ibatis实现Iterate的使用 (转)

    <iterate         property="" /*可选,              从传入的参数集合中使用属性名去获取值,              这个必须是一 ...

  6. mybits批量插入

    <!--批量插入--> <insert id="batchSave" parameterType="java.util.List"> i ...

  7. mybatis Oracle 批量插入,批量更新

    传入的参数只要是list类型的参数就行了..............1.批量插入<insert id="insertBatch" parameterType="ja ...

  8. mybatis父子表批量插入

    <!--父子表批量插入 --> <insert id="insertBatch" parameterType="com.niwopay.dto.beni ...

  9. mysql 批量更新和批量插入

    1. 批量更新 update table_name set field_name = CASE id WHEN id1 THEN  field_value, WHEN id1 THEN  field_ ...

随机推荐

  1. 利用java8新特性,用简洁高效的代码来实现一些数据处理

    定义1个Apple对象: public class Apple {    private Integer id;    private String name;    private BigDecim ...

  2. K8S网络模型

    一.网络模型概述 k8s的网络中主要存在四种类型的通信:同一pod内的容器间通信.各pod彼此之间的通信.pod与service间的通信.以及集群外部的流量同service之间的通信. k8s为pod ...

  3. Windows 和 Linux 下生成以当前时间命名的文件

    在 Windows.Linux 操作系统,分别利用BAT批处理文件和Shell脚本,生成类似“20110228_082905.txt”以“年月日_时分秒”命名的文件. Windows BAT批处理文件 ...

  4. 对数据劫持 OR 数据代理 的研究------------引用

    数据劫持,也叫数据代理. 所谓数据劫持,指的是在访问或者修改对象的某个属性时,通过一段代码拦截这个行为,进行额外的操作或者修改返回结果.比较典型的是 Object.defineProperty() 和 ...

  5. Java中截取字符串中小数点前面的字符

    通过下标获取 String number = "2563.2154"; int index = number.indexOf("."); String intN ...

  6. Java多线程和并发(十二),Java线程池

    目录 1.利用Executors创建线程的五种不同方式 2.为什么要使用线程池 3.Executor的框架 4.J.U.C的三个Executor接口 5.ThreadPoolExecutor 6.线程 ...

  7. NS3安装

    1.添加源sudo vim /etc/apt/sources.list deb http://archive.ubuntu.com/ubuntu/ trusty main universe restr ...

  8. 前端性能优化 —— reflow(回流/重排)和repaint(重绘)

    简要:整个在浏览器的渲染过程中(页面初始化,用户行为改变界面样式,动画改变界面样式等)reflow(回流)和repaint(重绘) 会大大影响web性能,尤其是手机页面.因此我们在页面设计的时候要尽量 ...

  9. Nginx配置记录【例3】

    C服务器,例: [root@82_www_db_2 conf.d]# egrep -v "^#|^$" /etc/nginx/nginx.conf user nginx; work ...

  10. Upload-libs通关详解

    Uplo ad-labs—详解 1前端验证绕过 前端验证绕过可以直接用burp万能绕过前端JS脚本 方法先上传一张jpg Burp改包然后改后缀 上传成功 2Content-Type方式绕过 此绕过方 ...