mybatis使用动态sql foreach

时间:2014-05-20 07:25:30

标签: java mybatis

如何在mybatis映射器中使用foreach?我的意思是我应该发送什么参数?

例如我有这个选择语句

<select id="findObjectsWithIds" resultMap="SimpleObjectResult">
    SELECT * FROM testschema."XSimpleTable"
    WHERE ID in
    <foreach item="item" index="index" collection="list" 
        open="(" separator="," close=")">
            #{item}
    </foreach>
</select>

我有方法接口

List<SimpleObject> findObjectsWithIds(List<String> ids);

我已经实现了界面

@Override
public List<SimpleObject> findObjectsWithIds(List<String> ids) {
    SqlSession sqlSession = MyBatisSqlSessionFactory.openSession();
    try {
        SimpleMapper simpleMapper = sqlSession.getMapper(SimpleMapper.class);
        return simpleMapper.findObjectsWithIds(ids);
    } finally {
        sqlSession.close();
    }
}

当我试图跑 - 我有这个错误

enter image description here

如何正确使用foreach

1 个答案:

答案 0 :(得分:2)

问题解决了。

我添加了注释param

List<SimpleObject> findObjectsWithIds(@Param("list") List<Integer> ids);

我还发送了String个索引代表而不是Integer