您好,登錄后才能下訂單哦!
這篇文章主要介紹“Java SSM整合開發統一結果封裝實例分析”,在日常操作中,相信很多人在Java SSM整合開發統一結果封裝實例分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java SSM整合開發統一結果封裝實例分析”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
SSM整合以及功能模塊開發完成后,接下來,我們在上述案例的基礎上分析下有哪些問題需要我們去解決下。首先第一個問題是:
在Controller層增刪改返回給前端的是boolean類型數據
在Controller層查詢單個返回給前端的是對象
在Controller層查詢所有返回給前端的是集合對象
目前我們就已經有三種數據類型返回給前端,如果隨著業務的增長,我們需要返回的數據類型會越來越多。對于前端開發人員在解析數據的時候就比較凌亂了,所以對于前端來說,如果后臺能夠返回一個統一的數據結果,前端在解析的時候就可以按照一種方式進行解析。開發就會變得更加簡單。
所以我們就想能不能將返回結果的數據進行統一,具體如何來做,大體的思路為:
為了封裝返回的結果數據:創建結果模型類,封裝數據到data屬性中
為了封裝返回的數據是何種操作及是否操作成功:封裝操作結果到code屬性中
操作失敗后為了封裝返回的錯誤信息:封裝特殊消息到message(msg)屬性中
根據分析,我們可以設置統一數據返回結果類
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
最后我們的項目結構:
步驟4:啟動服務測試
我們的返回結果就已經能以一種統一的格式返回給前端。前端根據返回的結果,先從中獲取code
,根據code判斷,如果成功則取data
屬性的值,如果失敗,則取msg
中的值做提示。
到此,關于“Java SSM整合開發統一結果封裝實例分析”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。