欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java SSM整合開發(fā)統(tǒng)一結(jié)果封裝詳解

 更新時間:2022年08月19日 16:10:28   作者:十八歲討厭編程  
這篇文章主要介紹了Java SSM整合開發(fā)實現(xiàn)統(tǒng)一結(jié)果封裝,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

表現(xiàn)層與前端數(shù)據(jù)傳輸協(xié)議定義

SSM整合以及功能模塊開發(fā)完成后,接下來,我們在上述案例的基礎(chǔ)上分析下有哪些問題需要我們?nèi)ソ鉀Q下。首先第一個問題是:

在Controller層增刪改返回給前端的是boolean類型數(shù)據(jù)

在Controller層查詢單個返回給前端的是對象

在Controller層查詢所有返回給前端的是集合對象

目前我們就已經(jīng)有三種數(shù)據(jù)類型返回給前端,如果隨著業(yè)務(wù)的增長,我們需要返回的數(shù)據(jù)類型會越來越多。對于前端開發(fā)人員在解析數(shù)據(jù)的時候就比較凌亂了,所以對于前端來說,如果后臺能夠返回一個統(tǒng)一的數(shù)據(jù)結(jié)果,前端在解析的時候就可以按照一種方式進(jìn)行解析。開發(fā)就會變得更加簡單。

所以我們就想能不能將返回結(jié)果的數(shù)據(jù)進(jìn)行統(tǒng)一,具體如何來做,大體的思路為:

  • 為了封裝返回的結(jié)果數(shù)據(jù):創(chuàng)建結(jié)果模型類,封裝數(shù)據(jù)到data屬性中
  • 為了封裝返回的數(shù)據(jù)是何種操作及是否操作成功:封裝操作結(jié)果到code屬性中
  • 操作失敗后為了封裝返回的錯誤信息:封裝特殊消息到message(msg)屬性中

根據(jù)分析,我們可以設(shè)置統(tǒng)一數(shù)據(jù)返回結(jié)果類

public class Result{
	private Object data;
	private Integer code;
	private String msg;
}

注意:Result類名及類中的字段并不是固定的,可以根據(jù)需要自行增減提供若干個構(gòu)造方法,方便操作。

表現(xiàn)層與前端數(shù)據(jù)傳輸協(xié)議實現(xiàn)

結(jié)果封裝

對于結(jié)果封裝,我們應(yīng)該是在表現(xiàn)層進(jìn)行處理,所以我們把結(jié)果類放在controller包下,當(dāng)然你也可以放在domain包,這個都是可以的,具體如何實現(xiàn)結(jié)果封裝,具體的步驟為:

步驟1:創(chuàng)建Result類

public class Result {
    //描述統(tǒng)一格式中的數(shù)據(jù)
    private Object data;
    //描述統(tǒng)一格式中的編碼,用于區(qū)分操作,可以簡化配置0或1表示成功失敗
    private Integer code;
    //描述統(tǒng)一格式中的消息,可選屬性
    private String msg;
    public Result() {
    }
    //構(gòu)造方法是方便對象的創(chuàng)建
    public Result(Integer code,Object data) {
        this.data = data;
        this.code = code;
    }
    //構(gòu)造方法是方便對象的創(chuàng)建
    public Result(Integer code, Object data, String msg) {
        this.data = data;
        this.code = code;
        this.msg = msg;
    }
    public Object getData() {
        return data;
    }
    public void setData(Object data) {
        this.data = data;
    }
    public Integer getCode() {
        return code;
    }
    public void setCode(Integer code) {
        this.code = code;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    @Override
    public String toString() {
        return "Result{" +
                "data=" + data +
                ", code=" + code +
                ", msg='" + msg + '\'' +
                '}';
    }
}

注意:

可以不寫toString方法,他最后會被被轉(zhuǎn)為json格式。 但是getter和setter方法是一定要有的!

步驟2:定義返回碼Code類

//狀態(tài)碼
public class Code {
    public static final Integer SAVE_OK = 20011;
    public static final Integer DELETE_OK = 20021;
    public static final Integer UPDATE_OK = 20031;
    public static final Integer GET_OK = 20041;
    public static final Integer SAVE_ERR = 20010;
    public static final Integer DELETE_ERR = 20020;
    public static final Integer UPDATE_ERR = 20030;
    public static final Integer GET_ERR = 20040;
}

注意:code類中的常量設(shè)計也不是固定的,可以根據(jù)需要自行增減,例如將查詢再進(jìn)行細(xì)分為GET_OK,GET_ALL_OK,GET_PAGE_OK等。

步驟3:修改Controller類的返回值

//統(tǒng)一每一個控制器方法返回值
@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired
    private BookService bookService;
    @PostMapping
    public Result save(@RequestBody Book book) {
        boolean flag = bookService.save(book);
        return new Result(flag ? Code.SAVE_OK:Code.SAVE_ERR,flag);
    }
    @PutMapping
    public Result update(@RequestBody Book book) {
        boolean flag = bookService.update(book);
        return new Result(flag ? Code.UPDATE_OK:Code.UPDATE_ERR,flag);
    }
    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Integer id) {
        boolean flag = bookService.delete(id);
        return new Result(flag ? Code.DELETE_OK:Code.DELETE_ERR,flag);
    }
    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id) {
        Book book = bookService.getById(id);
        Integer code = book != null ? Code.GET_OK : Code.GET_ERR;
        String msg = book != null ? "" : "數(shù)據(jù)查詢失敗,請重試!";
        return new Result(code,book,msg);
    }
    @GetMapping
    public Result getAll() {
        List<Book> bookList = bookService.getAll();
        Integer code = bookList != null ? Code.GET_OK : Code.GET_ERR;
        String msg = bookList != null ? "" : "數(shù)據(jù)查詢失敗,請重試!";
        return new Result(code,bookList,msg);
    }
}

這里拿bookList和null比較是因為,如果查詢?nèi)繘]有查到結(jié)果,那么就會直接返回一個null,而不是返回一個空列表!

在根據(jù)id查book的時候,如果沒有查到也是返回一個null

最后我們的項目結(jié)構(gòu):

步驟4:啟動服務(wù)測試

至此,我們的返回結(jié)果就已經(jīng)能以一種統(tǒng)一的格式返回給前端。前端根據(jù)返回的結(jié)果,先從中獲取code,根據(jù)code判斷,如果成功則取data屬性的值,如果失敗,則取msg中的值做提示。

到此這篇關(guān)于Java SSM整合開發(fā)統(tǒng)一結(jié)果封裝詳解的文章就介紹到這了,更多相關(guān)Java封裝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • redis分布式鎖解決表單重復(fù)提交的問題

    redis分布式鎖解決表單重復(fù)提交的問題

    在系統(tǒng)中,有些接口如果重復(fù)提交,可能會造成臟數(shù)據(jù)或者其他的嚴(yán)重的問題,所以我們一般會對與數(shù)據(jù)庫有交互的接口進(jìn)行重復(fù)處理。本文就詳細(xì)的介紹一下redis分布式鎖解決表單重復(fù)提交,感興趣的可以了解一下
    2021-11-11
  • Java中Timer的schedule()方法參數(shù)詳解

    Java中Timer的schedule()方法參數(shù)詳解

    今天小編就為大家分享一篇關(guān)于Java中Timer的schedule()方法參數(shù)詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Java日期時間類及計算詳解

    Java日期時間類及計算詳解

    這篇文章主要介紹了Java日期時間類及計算詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助
    2022-07-07
  • SpringBoot3.0整合chatGPT的完整步驟

    SpringBoot3.0整合chatGPT的完整步驟

    ChatGPT是OpenAI推出的一個語言模型系統(tǒng),它能夠?qū)崟r回答用戶提問,包括聊天、糾正語法錯誤,甚至是寫代碼、寫劇本等,由于可玩性很高,迅速在全球范圍內(nèi)風(fēng)靡起來,下面這篇文章主要給大家介紹了關(guān)于SpringBoot3.0整合chatGPT的完整步驟,需要的朋友可以參考下
    2022-12-12
  • Spring Boot整合mybatis使用注解實現(xiàn)動態(tài)Sql、參數(shù)傳遞等常用操作(實現(xiàn)方法)

    Spring Boot整合mybatis使用注解實現(xiàn)動態(tài)Sql、參數(shù)傳遞等常用操作(實現(xiàn)方法)

    這篇文章主要介紹了Spring Boot整合mybatis使用注解實現(xiàn)動態(tài)Sql、參數(shù)傳遞等常用操作(實現(xiàn)方法),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • Java權(quán)重隨機的實現(xiàn)方法

    Java權(quán)重隨機的實現(xiàn)方法

    這篇文章主要介紹了Java權(quán)重隨機的實現(xiàn)方法,實例分析了權(quán)重隨機算法的原理與完整實現(xiàn)方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • Java實現(xiàn)文件點擊沒反應(yīng)的方法

    Java實現(xiàn)文件點擊沒反應(yīng)的方法

    jsp頁面鏈接,點擊訪問action用IO流去下載服務(wù)器上的文件,問題是任憑怎么點擊都沒反應(yīng),日志也不報錯。這篇文章給大家介紹Java實現(xiàn)文件點擊沒反應(yīng)的方法,需要的朋友參考下吧
    2018-07-07
  • Java算法之堆排序代碼示例

    Java算法之堆排序代碼示例

    這篇文章主要介紹了Java算法之堆排序代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • SpringBoot自定義錯誤處理邏輯詳解

    SpringBoot自定義錯誤處理邏輯詳解

    這篇文章主要介紹了SpringBoot自定義錯誤處理邏輯,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-10-10
  • SpringMVC高級開發(fā)功能實現(xiàn)過程解析

    SpringMVC高級開發(fā)功能實現(xiàn)過程解析

    這篇文章主要介紹了SpringMVC高級開發(fā)功能實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06

最新評論