在mybatis foreach标签中获取元素索引?

时间:2016-01-25 09:48:36

标签: mybatis

我试图在mybatis中遍历arraylist并希望将元素的位置传递给(如[i],然后我希望每个元素的值为i)是否有办法在mybatis中执行此操作?

1 个答案:

答案 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版本?可能是较老的一个错误......