Java 在ibatis中使用in子句

Java 在ibatis中使用in子句,java,sybase,ibatis,Java,Sybase,Ibatis,您好,我正在使用iBATIS2并尝试查询一个包含3种类型参数的表。 下面是代码 <parameterMap id="getSearchLateJob_Param" class="java.util.HashMap"> <parameter property="jobSet" javaType="java.lang.String" jdbcType="VARCHAR"/> <parameter property="job" javaType="java

您好,我正在使用iBATIS2并尝试查询一个包含3种类型参数的表。 下面是代码

<parameterMap id="getSearchLateJob_Param" class="java.util.HashMap">
    <parameter property="jobSet" javaType="java.lang.String" jdbcType="VARCHAR"/>
    <parameter property="job" javaType="java.lang.String" jdbcType="VARCHAR"/>
    <!-- <parameter property = "currentJobStatusStrArr" javaType="java.lang.String" jdbcType="VARCHAR"/> -->
    <parameter property = "currentJobStatusArr" javaType="java.util.List" jdbcType="ARRAY"/>
</parameterMap>

<statement id="getSearchLateJob" parameterMap="getSearchLateJob_Param"  resultMap="getCurrentJob_r">
     select a.JOBSET as "JOBSET",
        a.JOB as "JOB",
        a.JOB_NO as "JOB_NO",
        a.QUALIFIER as "QUALIFIER",
        b.JOB_AVG as "JOB_AVG",
        a.STATUS as "STATUS" 
    from  CA_JOB_STATUS a,JOB_AVG b
    where a.JOBSET = b.JOBSET
        and a.JOB=b.JOB
        and a.JOBSET like ?  
        and a.JOB like ?    
        <!-- and a.STATUS in -->
        <dynamic prepend="and a.STATUS in ">
            <iterate property= "currentJobStatusArr"  open="(" close=")" conjunction=",">
              #currentJobStatusArr[]#
            </iterate>
        </dynamic>
    order by a.END_TIME desc, a.START_TIME desc                                          
</statement>
它仍然给我一个输入参数未设置索引2的错误


请帮助说明此方法的错误。

我完全忽略了parameterMap属性,并将语句修改为以下内容:

     <statement id="getSearchLateJob" parameterClass="map" resultMap="getCurrentJob_r">
      select a.JOBSET as "JOBSET",
        a.JOB as "JOB",
        a.JOB_NO as "JOB_NO",
        a.QUALIFIER as "QUALIFIER",
        case when year(a.START_TIME) = 1900 then null else a.START_TIME end as "EXPECTED_START_TIME",
        case when year(a.END_TIME) = 1900 then null else a.END_TIME end as "END_TIME",
        datediff(mi,a.START_TIME,a.END_TIME) as "DURATION",
        b.JOB_AVG as "JOB_AVG",
        a.STATUS as "STATUS" 
    from  CA_JOB_STATUS a,JOB_AVG b
    where a.JOBSET = b.JOBSET
        and a.JOB=b.JOB
        and a.JOBSET like #jobSet:VARCHAR#
        and a.JOB like #job:VARCHAR#    
        <!-- and a.STATUS in -->
        <dynamic prepend="and a.STATUS in ">
        <iterate property= "currentJobStatusArr"  open="(" close=")" conjunction=",">
        #currentJobStatusArr[]:VARCHAR#
        </iterate>
        </dynamic>
    order by a.END_TIME desc, a.START_TIME desc                                          
</statement>

可能是因为您缺少parameterMap上所需的其他参数。您在查询中输入:JOBSET、JOB、JOB_NO、QUALIFIER、JOB_AVG和STATUS,在地图上只有:JOBSET、JOB和currentjobstatuarr。在iBatis上,您应该在映射中放置等效参数。否否。。。如果删除list参数,查询工作正常。对于这些参数,它只是一个选择,我不发送任何输入。