亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java?SSM整合開發統一結果封裝實例分析

發布時間:2022-08-25 11:48:35 來源:億速云 閱讀:161 作者:iii 欄目:開發技術

這篇文章主要介紹“Java SSM整合開發統一結果封裝實例分析”,在日常操作中,相信很多人在Java SSM整合開發統一結果封裝實例分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java SSM整合開發統一結果封裝實例分析”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

表現層與前端數據傳輸協議定義

SSM整合以及功能模塊開發完成后,接下來,我們在上述案例的基礎上分析下有哪些問題需要我們去解決下。首先第一個問題是:

在Controller層增刪改返回給前端的是boolean類型數據

Java?SSM整合開發統一結果封裝實例分析

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

Java?SSM整合開發統一結果封裝實例分析

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

Java?SSM整合開發統一結果封裝實例分析

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

所以我們就想能不能將返回結果的數據進行統一,具體如何來做,大體的思路為:

  • 為了封裝返回的結果數據:創建結果模型類,封裝數據到data屬性中

  • 為了封裝返回的數據是何種操作及是否操作成功:封裝操作結果到code屬性中

  • 操作失敗后為了封裝返回的錯誤信息:封裝特殊消息到message(msg)屬性中

Java?SSM整合開發統一結果封裝實例分析

根據分析,我們可以設置統一數據返回結果類

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

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

表現層與前端數據傳輸協議實現

結果封裝

對于結果封裝,我們應該是在表現層進行處理,所以我們把結果類放在controller包下,當然你也可以放在domain包,這個都是可以的,具體如何實現結果封裝,具體的步驟為:

步驟1:創建Result類

public class Result {
    //描述統一格式中的數據
    private Object data;
    //描述統一格式中的編碼,用于區分操作,可以簡化配置0或1表示成功失敗
    private Integer code;
    //描述統一格式中的消息,可選屬性
    private String msg;
    public Result() {
    }
    //構造方法是方便對象的創建
    public Result(Integer code,Object data) {
        this.data = data;
        this.code = code;
    }
    //構造方法是方便對象的創建
    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方法,他最后會被被轉為json格式。 但是getter和setter方法是一定要有的!

步驟2:定義返回碼Code類

//狀態碼
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類中的常量設計也不是固定的,可以根據需要自行增減,例如將查詢再進行細分為GET_OK,GET_ALL_OK,GET_PAGE_OK等。

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

//統一每一個控制器方法返回值
@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 ? "" : "數據查詢失敗,請重試!";
        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 ? "" : "數據查詢失敗,請重試!";
        return new Result(code,bookList,msg);
    }
}

這里拿bookList和null比較是因為,如果查詢全部沒有查到結果,那么就會直接返回一個null,而不是返回一個空列表!

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

最后我們的項目結構:

Java?SSM整合開發統一結果封裝實例分析

步驟4:啟動服務測試

Java?SSM整合開發統一結果封裝實例分析

我們的返回結果就已經能以一種統一的格式返回給前端。前端根據返回的結果,先從中獲取code,根據code判斷,如果成功則取data屬性的值,如果失敗,則取msg中的值做提示。

到此,關于“Java SSM整合開發統一結果封裝實例分析”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

扎兰屯市| 定边县| 张掖市| 名山县| 洛隆县| 平安县| 六安市| 隆化县| 项城市| 尚义县| 青田县| 吉隆县| 板桥市| 定南县| 金沙县| 翁牛特旗| 海安县| 卢氏县| 淄博市| 自贡市| 班戈县| 兰州市| 如东县| 曲沃县| 湖南省| 西充县| 溆浦县| 远安县| 萍乡市| 海伦市| 吉林省| 乌什县| 西贡区| 龙州县| 五常市| 靖宇县| 资中县| 和龙市| 海兴县| 马关县| 深圳市|