用ibatis去批量操作数据库,报数组越界错误

liqiang080605 2016-09-29 03:50:09
<update id="batchUpdate" parameterClass="list">
<iterate conjunction="," open="" close="">
update
<include refid="tableName" />
set type=#[].type#
<isNotEmpty prepend="," property="idc">
idc=#[].idc#
</isNotEmpty>
<isNotEmpty prepend="," property="time">
time=#[].time#
</isNotEmpty>
<isNotEmpty prepend="," property="metricsValue">
metricsValue=#[].metricsValue#
</isNotEmpty>
<isNotEmpty prepend="," property="currentTopValue">
currentTopValue=#[].currentTopValue#
</isNotEmpty>
<isNotEmpty prepend="," property="lastedTopValue">
lastedTopValue=#[].lastedTopValue#
</isNotEmpty>
where 1=1
<isNotEmpty prepend="and" property="ip">
ip=#[].ip#
</isNotEmpty>
<isNotEmpty prepend="and" property="metricsKey">
metricsKey=#[].metricsKey#
</isNotEmpty>
</iterate>
</update>

batchUpdate的内容如上所示,传进来的list里放的是个对象,idc、ip等都是这个对象的属性。
网上查了下,说传进来的参数是list不能用property属性。我也没有用这个属性,但还是报如下错误:

Cause: com.ibatis.common.beans.ProbeException: Error getting ordinal list from JavaBean. Cause java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:94)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:505)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:90)
at org.springframework.orm.ibatis.SqlMapClientTemplate$10.doInSqlMapClient(SqlMapClientTemplate.java:384)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:194)
... 43 more
Caused by: com.ibatis.common.beans.ProbeException: Error getting ordinal list from JavaBean. Cause java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at com.ibatis.common.beans.BaseProbe.getIndexedProperty(BaseProbe.java:86)
at com.ibatis.common.beans.GenericProbe.getObject(GenericProbe.java:54)
at com.ibatis.sqlmap.engine.mapping.sql.dynamic.elements.IterateTagHandler.doStartFragment(IterateTagHandler.java:47)
at com.ibatis.sqlmap.engine.mapping.sql.dynamic.DynamicSql.processBodyChildren(DynamicSql.java:157)
at com.ibatis.sqlmap.engine.mapping.sql.dynamic.DynamicSql.processBodyChildren(DynamicSql.java:99)
at com.ibatis.sqlmap.engine.mapping.sql.dynamic.DynamicSql.process(DynamicSql.java:79)
at com.ibatis.sqlmap.engine.mapping.sql.dynamic.DynamicSql.getParameterMap(DynamicSql.java:61)
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:60)
... 47 more
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1911)
at com.ibatis.common.beans.BaseProbe.getIndexedProperty(BaseProbe.java:50)
... 54 more
...全文
226 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧