Java 如何在IBatis 2中为带有Parameterclass Map的SQL Update或SQL Select语句创建SQL In子句

Java 如何在IBatis 2中为带有Parameterclass Map的SQL Update或SQL Select语句创建SQL In子句,java,sql,ibatis,Java,Sql,Ibatis,我在使用IBatis框架时遇到了一些问题。我使用iBATIS2,现在我尝试执行一个SQLSELECT和SQLUPDATE语句,它与参数类“java.util.Map”和IBatis迭代器标记一起工作。但现在看来,这两个组成部分并不协同工作 如果我只在SQL select语句中使用带有IBatis迭代器标记的Java列表,它就可以正常工作 如果我只在SQL updatestatement中使用带有IBatis迭代器标记的Java列表,它就不起作用 有必要使用Java映射作为parameterCla

我在使用IBatis框架时遇到了一些问题。我使用iBATIS2,现在我尝试执行一个SQLSELECT和SQLUPDATE语句,它与参数类“java.util.Map”和IBatis迭代器标记一起工作。但现在看来,这两个组成部分并不协同工作

如果我只在SQL select语句中使用带有IBatis迭代器标记的Java列表,它就可以正常工作

如果我只在SQL updatestatement中使用带有IBatis迭代器标记的Java列表,它就不起作用

有必要使用Java映射作为parameterClass,因为在SQL语句中需要多个参数

现在,我已经创建了以下ArrayList“filterData”,它将包含在HashMap“myMap”中:

以下是我的IBatis SQL select语句:

Long selectedValues = (Long) getSqlMapClientTemplate().queryForObject("selectWithMap", myMap)
<select id="selectWithMap" resultClass="long" parameterClass="java.util.Map">
    SELECT  COUNT(*)        
    FROM    $mySchema$.myTable 
    WHERE   myTable.id IN
    <iterate open="(" close=")" conjunction=",">
      #[filterData]#
    </iterate>      
</select>
Integer updatedValues = (Integer) getSqlMapClientTemplate().update("updateWithMap", myMap);
<update id="updateWithMap" parameterClass="java.util.Map">
    UPDATE  $mySchema$.myTable 
    SET     myTable.name = "Something!!",                   
    WHERE   myTable.id IN
    <iterate open="(" close=")" conjunction=",">
      #[filterData]#
    </iterate>      
</update>
以下是我的IBatis SQL更新语句:

Long selectedValues = (Long) getSqlMapClientTemplate().queryForObject("selectWithMap", myMap)
<select id="selectWithMap" resultClass="long" parameterClass="java.util.Map">
    SELECT  COUNT(*)        
    FROM    $mySchema$.myTable 
    WHERE   myTable.id IN
    <iterate open="(" close=")" conjunction=",">
      #[filterData]#
    </iterate>      
</select>
Integer updatedValues = (Integer) getSqlMapClientTemplate().update("updateWithMap", myMap);
<update id="updateWithMap" parameterClass="java.util.Map">
    UPDATE  $mySchema$.myTable 
    SET     myTable.name = "Something!!",                   
    WHERE   myTable.id IN
    <iterate open="(" close=")" conjunction=",">
      #[filterData]#
    </iterate>      
</update>
我怎样才能解决这个问题


非常感谢

查看iBatis xml,您的filterData标记似乎不正确。应该是:


更新$mySchema$.myTable
SET myTable.name=“Something!!”,
myTable.id在哪里 #filterData[]#