Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ibatis迭代列表的条件查询_Java_Mysql_Ibatis - Fatal编程技术网

Java 使用ibatis迭代列表的条件查询

Java 使用ibatis迭代列表的条件查询,java,mysql,ibatis,Java,Mysql,Ibatis,我在ibatis中使用下面的查询来迭代列表。如果列表为空,我想添加一个条件。在本例中,我希望更改condition.PFB xml中的查询: <statement id="getSearchLateJob" parameterClass="map" resultMap="getCurrentJob_r"> select a.JOBSET as "JOBSET", a.JOB as "JOB", a.JOB_NO as "JOB_NO", a.QUAL

我在ibatis中使用下面的查询来迭代列表。如果列表为空,我想添加一个条件。在本例中,我希望更改condition.PFB xml中的查询:

   <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                                          
致:

我找到了解决办法:

    <dynamic prepend="and a.STATUS ">
            <isNotEmpty property="currentJobStatusArr">
                <iterate property= "currentJobStatusArr" open="in (" close=")" conjunction=",">
                 #currentJobStatusArr[]:VARCHAR#
                </iterate>
            </isNotEmpty>
            <isEmpty property="currentJobStatusArr" >
                like #allRec:VARCHAR#
            </isEmpty>
        </dynamic>

#currentJobStatusArr[]:VARCHAR#
像#allRec:VARCHAR#
    select * from table where status like ?
    <dynamic prepend="and a.STATUS ">
            <isNotEmpty property="currentJobStatusArr">
                <iterate property= "currentJobStatusArr" open="in (" close=")" conjunction=",">
                 #currentJobStatusArr[]:VARCHAR#
                </iterate>
            </isNotEmpty>
            <isEmpty property="currentJobStatusArr" >
                like #allRec:VARCHAR#
            </isEmpty>
        </dynamic>