由于业务代码需要,用iterate来遍历整个数组,来批量查询,sqlMap如下
<select id="findTagNamesByIds" parameterClass="ArrayList" resultMap="mapitemname">
select id,name from yw_tag where 1=1
<dynamic>
<isNotEmpty property="ids">
and id in
<iterate open="(" close=")" conjunction=",">
#ids[]#
</iterate>
</isNotEmpty>
</dynamic>
</select>
但是Junit测试一致报错:错误如下
Caused by: com.ibatis.common.beans.ProbeException: Error getting ordinal list from JavaBean. Cause java.lang.StringIndexOutOfBoundsException: String index out of range: -1
然后google了一下解决方案,突然看到有人的博客里提到有和我一样的错误它说property会让iterate遍历失败并报这个错,然后删除后果然查询成功!
新的例子:
<!-- 获得模糊匹配的标签 -->
<select id="findTagNamesByIds" parameterClass="ArrayList" resultMap="mapitemname">
select id,name from yw_tag where 1=1
<dynamic>
<isNotEmpty>
and id in
<iterate open="(" close=")" conjunction=",">
#ids[]#
</iterate>
</isNotEmpty>
</dynamic>
</select>