<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