JavaWeb如何實(shí)現(xiàn)統(tǒng)一查詢(xún)接口(jfinal)
我發(fā)現(xiàn)我所有有查詢(xún)的controller都要調(diào)用service層的兩個(gè)方法 getById和getByKey 參數(shù)大致一樣
寫(xiě)的時(shí)候基本都是復(fù)制粘帖。。。 于是idea老提示大量重復(fù)代碼 好煩啊 于是就改進(jìn)了一下
讓所有有關(guān)查詢(xún)的service實(shí)現(xiàn)一個(gè)QueryService的接口
接口定義倆方法
import com.jfinal.plugin.activerecord.Page;
public interface QueryService<T> {
Page<T> getById(String id, String flag);
Page<T> getByKey(int page, int pageSize, String value, String flag);
}
肯定要用泛型啊 不然強(qiáng)轉(zhuǎn)容易出錯(cuò) 鬼知道我剛才調(diào)用的哪的這個(gè)方法
然后把service層的那些方法都統(tǒng)一一下參數(shù)
然后在一個(gè)公共控制器里寫(xiě)個(gè)靜態(tài)方法 那個(gè)注解應(yīng)該可以不用寫(xiě) 反正控制器不認(rèn)靜態(tài)方法
@NotAction
static <T> Page<T> query(QueryService<T> service,Controller controller, String key, String value, String flag, int page, int pageSize) {
value = value == null ? "" : value;
Page<T> list;
if ("id".equals(key)) {
list = service.getById(value, flag);
} else if ("key".equals(key)) {
list = service.getByKey(page, pageSize, value, flag);
} else {
list = null;
}
if (list == null) {
controller.renderJson("result", "{'code':'203','info':'unknown key'}");
} else {
controller.renderJson("result", "{'code':'103','info':" + Json.getJson().toJson(list) + "}");
}
return list;
}
用的時(shí)候在控制器里第一個(gè)寫(xiě)調(diào)用的service對(duì)象,這個(gè)service一定要實(shí)現(xiàn)QueryService接口,第二個(gè)就傳this,因?yàn)椴樵?xún)結(jié)束要傳給前臺(tái)的,我也是懶,都寫(xiě)這里了
如果render不寫(xiě)這里的話就把第二個(gè)參數(shù)刪掉,把12-16行的業(yè)務(wù)代碼扔回控制器的方法里寫(xiě)
最后還返回list 我也不知道我想干啥 等我想開(kāi)了就把返回值刪掉算了
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 如何用Jfinal連接多個(gè)數(shù)據(jù)庫(kù)
- JFINAL+Ajax傳參 array 數(shù)組方法 獲取request中數(shù)組操作
- JFinal使用ajaxfileupload實(shí)現(xiàn)圖片上傳及預(yù)覽
- JFinal實(shí)現(xiàn)偽靜態(tài)的方法
- JFinal極速開(kāi)發(fā)框架使用筆記分享
- jfinal與bootstrap的登出實(shí)戰(zhàn)詳解
- java 中JFinal getModel方法和數(shù)據(jù)庫(kù)使用出現(xiàn)問(wèn)題解決辦法
- Bootstrap+jfinal退出系統(tǒng)彈出確認(rèn)框的實(shí)現(xiàn)方法
- Bootstrap+jfinal實(shí)現(xiàn)省市級(jí)聯(lián)下拉菜單
- jfinal與bootstrap的登錄跳轉(zhuǎn)實(shí)戰(zhàn)演習(xí)
- jfinal添加jcaptcha驗(yàn)證碼實(shí)現(xiàn)方法
- JFinal 調(diào)用存儲(chǔ)過(guò)程的步驟
相關(guān)文章
簡(jiǎn)單的用java實(shí)現(xiàn)讀/寫(xiě)文本文件的示例
同時(shí)也展示了如果從輸入流中讀出來(lái)內(nèi)容寫(xiě)入輸出流中(僅限文本流) 三個(gè)例子可以獨(dú)立存在,所以根據(jù)需要只看其中一個(gè)就行了。2008-07-07
Spring框架實(shí)現(xiàn)AOP的兩種方式詳解
這篇文章主要為大家詳細(xì)介紹了Spring框架實(shí)現(xiàn)AOP的兩種方式,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定的借鑒價(jià)值,需要的可以參考一下2022-09-09
一文詳解如何使用線程池來(lái)優(yōu)化我們的應(yīng)用程序
線程池是一種工具,但并不是適用于所有場(chǎng)景。在使用線程池時(shí),我們需要根據(jù)應(yīng)用程序的性質(zhì)、計(jì)算資源的可用性和應(yīng)用程序的需求進(jìn)行適當(dāng)?shù)呐渲?。本文主要介紹了如何使用線程池來(lái)優(yōu)化我們的應(yīng)用程序,需要的可以參考一下2023-04-04
SpringBoot3整合Nacos?V2.3.2的詳細(xì)過(guò)程
本文介紹了如何在?Spring?Boot?3.2.x?項(xiàng)目中整合?Nacos?2.3.2,包括依賴(lài)配置、Nacos?服務(wù)發(fā)現(xiàn)與動(dòng)態(tài)配置的配置方法,通過(guò)整合?Nacos,Spring?Boot?應(yīng)用可以實(shí)現(xiàn)高效的服務(wù)發(fā)現(xiàn)、動(dòng)態(tài)配置管理以及分布式系統(tǒng)中的靈活擴(kuò)展,感興趣的朋友跟隨小編一起看看吧2024-11-11
Java中實(shí)現(xiàn)日期時(shí)間字符串轉(zhuǎn)換為Date對(duì)象的方法
在 Java 編程中,日期時(shí)間的處理是一項(xiàng)常見(jiàn)且重要的任務(wù),無(wú)論是數(shù)據(jù)存儲(chǔ)、日志記錄還是業(yè)務(wù)邏輯處理,準(zhǔn)確地表示和操作日期時(shí)間都是不可或缺的,本文給大家介紹了Java中實(shí)現(xiàn)日期時(shí)間字符串轉(zhuǎn)換為Date對(duì)象的方法,需要的朋友可以參考下2025-01-01
mybatis plus自動(dòng)生成代碼tinyint(1)自動(dòng)轉(zhuǎn)換為Boolean的問(wèn)題及解決
這篇文章主要介紹了mybatis plus自動(dòng)生成代碼tinyint(1)自動(dòng)轉(zhuǎn)換為Boolean的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
關(guān)于JAVA8的 Stream學(xué)習(xí)
這篇文章主要介紹了JAVA8 Stream學(xué)習(xí)方法的相關(guān)資料,需要的朋友可以參考下面文章內(nèi)容2021-09-09
Springboot?jpa使用sum()函數(shù)返回結(jié)果如何被接收
這篇文章主要介紹了Springboot?jpa使用sum()函數(shù)返回結(jié)果如何接收,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02

