SSH動態查詢封裝接口介紹
1.查詢記錄總條數
public int count(Class c,Object[][] eq,Object[][] like,String[][] datetime,String[][] noeq,String[] group,String[] asc,String[] desc);
2.分頁動態查詢記錄
public List<?> search(Class c,Object[][] eq,Object[][] like,String[][] datetime,String[][] noeq,String[] group,String[] asc,String[] desc,int start, int limit);
首先介紹兩個查詢接口的公有參數:
Class c : bean.class,即映射到你查詢的表結構的實體類
Object[][] eq : 精確查詢的參數name和value集合
{{“name”,”小明”},{code,”TB321”},...}
Object[][] like :普通模糊查詢的參數name和value集合
{{”company“,”大同”},{name,”小”},...}
String[][] noeq :不滿足此條件的查詢 參數爲name和value集合
{{"status","2"}} 執行狀態不爲2的所有記錄
此類參數可用於加載審覈頁的方法中,審覈頁需要顯示“待審覈”、“未通過”等狀態信息,但不顯示“已生效”信息,此時過濾掉已失效信息需要在此 添加參數 相當於數據庫語言的not in
String[][] datetime:模糊查詢日期時間的參數name和value集合(日期查詢 需要轉換格式,故單獨列出)
{{“signdate”,"2014"},{"startdate","2014-01"},{"enddate","2014-06-06"}}
日期格式YYYY/YYYY-MM/YYYY-MM-DD(日期字符串正則校驗可以在頁面完成)
String[] group :要分組的參數name列表
String[] asc :對查詢結果升序排列所需的參數name集合
String[] desc :對查詢結果降序排列所需的參數name集合
這裏提到的name非數據庫字段名,而是bean的屬性名,當然如果存在表關聯,
以用戶和職位爲例,User 和 Dept關聯,存在Dept dept;
則如果要查詢職位名爲xxx的所有User,name可填寫爲 dept.name,eq某一集合可填寫爲{”dept.name”,”xxx”}
分頁動態查詢記錄獨有的接口參數:
int start :從第幾條記錄開始查詢
int limit :本頁查詢的最大記錄數
參數列表除Class c不可爲空外,其餘參數皆可爲空。對集合參數中的不法數據(子集合填寫不完整、參數爲null or “”實現自動過濾)
根據你的不同需求使用接口相應參數,以合同表爲例:
精確查詢:根據合同編號、合同名稱、客戶代表等精確信息實現查詢
模糊查詢:根據合同簽訂、生效、失效、製表年、月、日等模糊時間,部分合同名稱等不精確參數實現查詢
組合查詢:根據頁面需求在action獲取相應參數(頁面參數統一使用String接收,避免int出現默認爲0的情況發生。在action使用Object對所獲value進行統一類型設置),根據不同的參數進行單個、多個條件的組合查詢。
意義:簡化代碼,所有類(表結構)的查詢都可組合使用這兩個接口。
便於維護,一旦查詢需求有改動,只需更改頁面參數和action接收參數即可
不足:未實現比較範圍(> = < between and)的查找(可按需實現)。以及對一些參數(數量總計、平均值)的特殊查找,此類查詢非公有故棄之.
相關文章:
SSH動態查詢具體實現之service