ibatis使用iterate实现批量插入insert正确写法
Posted weixupeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ibatis使用iterate实现批量插入insert正确写法相关的知识,希望对你有一定的参考价值。
由于想批量入库提升效率,最近实现了ibatis的批量插入,结果一直报错 :StringIndexOutOfBoundsException ,原来是value中的格式不正确。
本人邮箱:[email protected],欢迎讨论
正确写法示例:
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正确写法的主要内容,如果未能解决你的问题,请参考以下文章