泛型--->Result返回結果封裝


controller的返回結果一般有兩種:

    1.Rest API JSON 輸出

    2.頁面

目的:編寫優雅的代碼

實現:通過泛型對返回結果進行封裝

 

代碼如下:

一.控制層

 1 /**
 2      * 獲取用戶成功
 3      * @return
 4      */
 5     @RequestMapping("/getUser")
 6     @ResponseBody
 7     public Result<User> getUser(@RequestParam("id") int id){
 8         User user = userService.getUserById(id);
 9         System.out.println(user.toString());
10 
11         return Result.success(user);
12     }

返回結果:{"code":0,"message":"SUCCESS","data":{"id":1,"name":"斗戰勝佛"}}

 1 /**
 2      * 獲取用戶失敗
 3      * @param id
 4      * @return
 5      */
 6     @RequestMapping("/getUserFailed")
 7     @ResponseBody
 8     public Result<CodeMsg> getUserFailed(@RequestParam("id") int id){
 9         User user = userService.getUserById(id);
10         System.out.println(user.toString());
11 
12         return Result.error(CodeMsg.SERVER_ERROR);
13     }

 

返回結果:{"code":500100,"message":"服務端異常","data":null}

二:Result類

 1 public class Result<T> {
 2 
 3     private int code;
 4     private String message;
 5     private T data;
 6 
 7     /**
 8      * 成功時調用
 9      * @param data
10      * @param <T>
11      * @return
12      */
13     public static <T> Result<T> success(T data){
14         return new Result<T>(data);
15     }
16 
17     /**
18      * 失敗時調用
19      * @param codeMsg
20      * @param <T>
21      * @return
22      */
23     public static <T> Result error(CodeMsg codeMsg){
24         return new Result<T>(codeMsg);
25     }
26 
27     /**
28      * 構造方法私有化,不允許外部new Result
29      * @param data
30      */
31     private Result(T data){
32         this.code = 0;
33         this.message = "SUCCESS";
34         this.data = data;
35     }
36 
37     /**
38      * 構造方法私有化,不允許外部new Result
39      * @param codeMsg
40      */
41     private Result(CodeMsg codeMsg){
42         if (null == codeMsg) {
43             return;
44         }
45         this.code = codeMsg.getCode();
46         this.message = codeMsg.getMessage();
47     }
48 
49     public int getCode() {
50         return code;
51     }
52 
53     public void setCode(int code) {
54         this.code = code;
55     }
56 
57     public String getMessage() {
58         return message;
59     }
60 
61     public void setMessage(String message) {
62         this.message = message;
63     }
64 
65     public T getData() {
66         return data;
67     }
68 
69     public void setData(T data) {
70         this.data = data;
71     }
72 }

三:CodeMsg類

 1 public class CodeMsg {
 2 
 3      private int code;
 4      private String message;
 5 
 6     /**
 7      * //通用模塊異常 5001XX
 8      */
 9     public static CodeMsg SUCCESS = new CodeMsg(0,"SUCCESS");
10      public static CodeMsg SERVER_ERROR = new CodeMsg(500100,"服務端異常");
11 
12      //登陸模塊異常 5002XX
13     //商品模塊異常 5003XX
14     //訂單模塊異常 5004XX
15     //秒殺模塊異常 5005XX
16 
17 
18     private CodeMsg(int code, String message) {
19         this.code = code;
20         this.message = message;
21     }
22 
23     public int getCode() {
24         return code;
25     }
26 
27     public String getMessage() {
28         return message;
29     }
30 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM