ibatis使用iterate实现批量插入insert正确写法
由于想批量入库提升效率,最近实现了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正确写法的更多相关文章
- 24单行插入与批量插入-insert(必学)-天轰穿sqlserver视频教程
大纲:insert语句,简单插入数据与批量插入数据 为了冲优酷的访问量,所以这里只放优酷的地址了,其实其他网站还是都传了的哈. 代码下载http://www.cnthc.com/?/article/1 ...
- mybatis批量插入insert时报错
报错信息: 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确.此 RPC 请求中提供了过多的参数.最多应为2100 错误分析: 由于mybatis拼接的sql语句参数过多导致 解决办法 ...
- ibatis实现Iterate的使用
<iterate property="" /*可选, 从传入的参数集合中使用属性名去获取值, 这个必须是一个List类型, 否则会出现OutofRangeException, ...
- oracle 在xml中批量插入,批量修改及多组条件查询
最近公司用ibatis开发项目,本来可以用存储过程处理批量插入,批量修改及多组条件查询:但由于使用模块相对较小,暂时就在xml中配置,以前没有在xml做过类似处理,有必要记录一下:好了,代码如下: & ...
- ibatis实现Iterate的使用 (转)
<iterate property="" /*可选, 从传入的参数集合中使用属性名去获取值, 这个必须是一 ...
- mybits批量插入
<!--批量插入--> <insert id="batchSave" parameterType="java.util.List"> i ...
- mybatis Oracle 批量插入,批量更新
传入的参数只要是list类型的参数就行了..............1.批量插入<insert id="insertBatch" parameterType="ja ...
- mybatis父子表批量插入
<!--父子表批量插入 --> <insert id="insertBatch" parameterType="com.niwopay.dto.beni ...
- mysql 批量更新和批量插入
1. 批量更新 update table_name set field_name = CASE id WHEN id1 THEN field_value, WHEN id1 THEN field_ ...
随机推荐
- Eclipse设置模板codetemplates
在Window->Preferences->Java->Code Style->Code Templates,点击"Import",导入模板codetemp ...
- Java 和JavaScript实现C#中的String.format效果
1.Java实现 /** * 需要引入com.alibaba.fastjson.1.2.8 * String result2=HuaatUtil.format(templa ...
- @Mapper和@Repository的区别
参考博客地址 https://www.cnblogs.com/wangshen31/p/8735037.html 相同点 两个都是注解在Dao上 不同 @Repository需要在Spring中配置扫 ...
- Linux如何将pycharm添加到桌面
使用Ubuntu编辑器,在/usr/share/applications 目录下创建一个 Pycharm.destop的文件. sudo vim /usr/share/applications/Pyc ...
- oracle的监听控制
来自网络: listener control 监听控制 因为你在键入 lsnrctl 回车之后,就进入到监听控制界面. 在启动.关闭或者重启oracle监听器之前确保使用lsnrctl status命 ...
- 关于Mongodb的其他知识
Mongodb支持的数据类型 数据类型 描述 String 字符串.存储数据常用的数据类型.在 MongoDB 中,UTF-8 编码的字符串才是合法的. Integer 整型数值.用于存储数值.根据你 ...
- SVN各种错误提示产生原因及处理方法大全
SVN各种错误提示产生原因及处理方法大全 SVN各种错误提示产生原因及处理方法大全 1. svn: Server sent unexpected return value (500 Internal ...
- <label>标签的相关内容
㈠<label>标签的定义与用法 ⑴<label> 标签为 input 元素定义标注(标记). ⑵label 元素不会向用户呈现任何特殊效果.不过,它为鼠标用户改进了可用性.如 ...
- Struts2笔记(学struts2只需要这一篇文章)
1.如何将struts2框架引入到web项目中 1.把struts2相关jar包引入到项目中 2.把struts2的配置文件直接放到src下面,名字要叫做struts.xml.(运行时配置文 ...
- sqli-labs(41) and 两php函数的讲解
0X01 构造闭合 发现 不需要闭合 直接构造 id=- union ,database(), 成功 注入 0X02 堆叠注入同道理 一样的 这里我们来了解一下这个函数 mysqli_multi_qu ...