簡體   English   中英

使用ibatis有條件地查詢迭代列表

[英]Conditionally query for iterating a list using 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.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                                          

在這種情況下,我如何將動態前綴在其中迭代列表並構建IN查詢的位置更改為類似查詢:類似這樣的內容:

更改自:

    select * from table where status in (?,?)

至:

    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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM