SSMの統合と機能モジュールの開発が完了したら、次に上記の事例をもとにどのような問題を解決する必要があるかを分析していきます。まず最初の質問は、
Controller層で追加、削除、変更した際にフロントエンドに返されるのはboolean型のデータである
コントローラー層で単一のクエリを実行すると、フロントエンドに返されます。これはオブジェクトです。
コントローラー層のクエリで、フロントエンドに返されるのはすべてコレクションオブジェクトです。
現在、3 つの型があります データ型はフロントエンドに返されますが、ビジネスが成長するにつれて、より多くのデータ型を返す必要があります。フロントエンド開発者にとって、データを解析するときは非常に面倒なので、フロントエンドの場合、バックグラウンドが統一されたデータ結果を返すことができれば、フロントエンドは解析時に一方向で解析できます。開発がより簡単になります。
そこで、返された結果データを統合できるかどうか、そしてその方法を考えます。一般的なアイデアは次のとおりです:
返された結果データをカプセル化するには、次のようにします。結果モデルクラス、データを data 属性にカプセル化します。
返されたデータがどのような操作であるか、操作が成功したかどうかをカプセル化するには、操作結果を code 属性にカプセル化します。
操作が失敗した後に返されるエラー メッセージをカプセル化するには: 特別なメッセージをメッセージ (msg) 属性にカプセル化します。
public class Result{ private Object data; private Integer code; private String msg; }
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 + '\'' + '}'; } }
//状态码 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; }
//统一每一个控制器方法返回值 @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); } }
##戻り結果は、統一された形式でフロントエンドにすでに返されています。フロントエンドは返された結果をもとに、まず
codeを取得し、コードに基づいて判定し、成功した場合はdata
属性の値を取得し、失敗した場合は、 msg
の値を受け取ります。この値はリマインダーとして使用されます。
以上がJava SSM統合開発統合結果カプセル化例分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。