JavaWeb統一查詢接口(jfinal)

我發現我全部有查詢的controller都要調用service層的兩個方法 getById和getByKey 參數大體同樣ide

寫的時候基本都是複製粘帖。。。 因而idea老提示大量重複代碼 好煩啊 因而就改進了一下this

讓全部有關查詢的service實現一個QueryService的接口idea

接口定義倆方法spa

1 import com.jfinal.plugin.activerecord.Page; 2 
3 public interface QueryService<T> { 4 
5     Page<T> getById(String id, String flag); 6 
7     Page<T> getByKey(int page, int pageSize, String value, String flag); 8 }

確定要用泛型啊 否則強轉容易出錯 鬼知道我剛纔調用的哪的這個方法code

而後把service層的那些方法都統一一下參數對象

而後在一個公共控制器裏寫個靜態方法 那個註解應該能夠不用寫 反正控制器不認靜態方法blog

 1 @NotAction  2 static <T> Page<T> query(QueryService<T> service,Controller controller, String key, String value, String flag, int page, int pageSize) {  3     value = value == null ? "" : value;  4     Page<T> list;  5     if ("id".equals(key)) {  6         list = service.getById(value, flag);  7     } else if ("key".equals(key)) {  8         list = service.getByKey(page, pageSize, value, flag);  9     } else { 10         list = null; 11  } 12     if (list == null) { 13         controller.renderJson("result", "{'code':'203','info':'unknown key'}"); 14     } else { 15         controller.renderJson("result", "{'code':'103','info':" + Json.getJson().toJson(list) + "}"); 16  } 17     return list; 18 }

用的時候在控制器裏第一個寫調用的service對象,這個service必定要實現QueryService接口,第二個就傳this,由於查詢結束要傳給前臺的,我也是懶,都寫這裏了接口

若是render不寫這裏的話就把第二個參數刪掉,把12-16行的業務代碼扔回控制器的方法裏寫get

最後還返回list 我也不知道我想幹啥 等我想開了就把返回值刪掉算了io

相關文章
相關標籤/搜索