我试图在mybatis中遍历arraylist并希望将元素的位置传递给(如[i],然后我希望每个元素的值为i)是否有办法在mybatis中执行此操作?
答案 0 :(得分:1)
我使用以下查询来测试...
<select id="test" resultType="Long" parameterType="something.Testy">
<foreach item="item" index="index" collection="list" open="" separator=" UNION " close="">
SELECT #{index} FROM DUAL
</foreach>
</select>
something.Testy
是一个简单的对象:
public class Testy {
public List<Integer> getList() {
return Arrays.asList( 4, 5, 6 );
}
}
结果是列表[ 0, 1, 2 ]
,因此使用当前的MyBatis版本(3.3.0)正确确定#{index}
。 MyBatis创建的查询看起来像这样......
SELECT ? FROM DUAL UNION SELECT ? FROM DUAL UNION SELECT ? FROM DUAL
Parameters: 0(Integer), 1(Integer), 2(Integer)
也许您需要更新MyBatis版本?可能是较老的一个错误......