如何在Mybatis中正确使用<foreach>语句

时间:2018-01-15 09:31:49

标签: java mysql mybatis

当我使用statemant时,总会出现问题,

Parameter 'item' not found.

这是我的sql statemant:

<select id="getTest" resultType="java.util.HashMap" parameterType="java.util.List">
    <![CDATA[
          SELECT COUNT(*) AS commentCount, WORK_ID AS workId FROM TB_COMMENT WHERE TB_COMMENT.WORK_ID IN
          <foreach item="item" collection="list" separator="," open="(" close=")" index="">
              #{item}
          </foreach>
         GROUP BY TB_COMMENT.WORK_ID
    ]]>
</select>

这是我的java状态:

@MapKey("workId")
public Map<Integer, String> getTest(List<Integer> workIds)throws DataAccessException;

工具:

@Resource
private StatusMapper statusMapper;
List<Integer> list = new ArrayList<>();
for (WorkModel i : pictures)
     if(!TextUtils.isEmpty(i.getUserId()))
         list.add(Integer.parseInt(i.getUserId()));
Map<Integer,String> tset = statusMapper.getTest(list);

任何帮助都很快,谢谢。

1 个答案:

答案 0 :(得分:0)

好的,似乎在,动态sql无法解析,我删除它们,它的工作原理。谢谢花时间在这里的人。