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類型參數。如果不需要,那麼去掉第二個參數。