SSH動態查詢封裝接口介紹

            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 : 精確查詢的參數namevalue集合

        {{“name”,”小明”},{code,”TB321”},...}

     Object[][] like :普通模糊查詢的參數namevalue集合

        {{”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的所有Username可填寫爲 dept.nameeq某一集合可填寫爲{”dept.name”,”xxx”}

   

分頁動態查詢記錄獨有的接口參數:

     int start 從第幾條記錄開始查詢 

     int limit 本頁查詢的最大記錄數

 

參數列表除Class c不可爲空外,其餘參數皆可爲空。對集合參數中的不法數據(子集合填寫不完整、參數爲null or “”實現自動過濾)

 

根據你的不同需求使用接口相應參數,以合同表爲例:

     精確查詢:根據合同編號、合同名稱、客戶代表等精確信息實現查詢

     模糊查詢:根據合同簽訂、生效、失效、製表年、月、日等模糊時間,部分合同名稱等不精確參數實現查詢

     組合查詢:根據頁面需求在action獲取相應參數(頁面參數統一使用String接收,避免int出現默認爲0的情況發生。在action使用Object對所獲value進行統一類型設置),根據不同的參數進行單個、多個條件的組合查詢。

 

 意義:簡化代碼,所有類(表結構)的查詢都可組合使用這兩個接口。

     便於維護,一旦查詢需求有改動,只需更改頁面參數和action接收參數即可 

不足:未實現比較範圍(> = < between and)的查找(可按需實現)以及對一些參數(數量總計、平均值)的特殊查找,此類查詢非公有故棄之.

   相關文章:

SSH動態查詢具體實現之service

SSH動態查詢具體實現之Dao

發佈了56 篇原創文章 · 獲贊 7 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章