queryList界面,新收、舊存、已結、未結功能的錯誤與收穫

1.關於日期的問題,在利用日期作爲filter的條件時,稍不注意就會造成某一個天的缺失。

    原因在於:對於日期要設定一個合理的分割規則,使得各個時間段的時間沒有遺漏。

    改進方法:由於存儲的時間是yyyy-MM-dd格式,所以所有參數的時分秒都是0。因此,對一個時間段的end進行處理,在傳參之後對這個時間的

天數+1,使用這個時間段時,使用<end時間作爲統一標準,並且可以保證該時間段包前不包後的規則。

 

2.在對四種條件進行查詢時,需要進行條件的過濾,除去普通的條件後還有特殊情況。

    條件是同一個字段,兩種可能:意思是兩種可能都有,例如:filters.add(new PropertyFlter("EQS_status_OR_status", JudConstant.JUD_CASE_STATUS_CLOSE,

JudConstant.JUD_CASE_STATUS_ARCHIVE)); OR是或的意思。

    條件是兩個字段,各有可能:意思是有兩個字段都需要判斷,例如:filters.add(new OORPropertyFilter("EQS_closeTime_OOR_EQS_registerTime", end, begin));

 

3.在普通條件和特殊條件無法進行準確過濾的時候,對查詢的page方法進行改寫,在保證普通條件查詢的前提下,增加參數和判斷,以滿足複雜查詢的需要。

    例如未結功能:

    對查詢條件page方法進行改寫,增加一個map類型的參數。將條件參數傳遞到map中,在dao中進行對條件的處理。

    技巧:

    進行對sql語句的拼接,在滿足基本條件的sql中增加 1=1 恆成立條件,滿足普通查詢。

    在對參數進行判斷時(例如:("01").equals(x)),將結果放在前邊,可以避免出現空指針的異常。

    ***   如果界面上還需要實體類的其他參數,那麼可以使用類似:jdbcDao.findPage(sql, TjudCaseInfo.class, page, params); 的方法,第二個參數爲實體類.class,

    page是分頁方法參數,params是map類型參數。如果不需要,那麼去掉第二個參數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章