ホームページ >Java >&#&チュートリアル >Java SSM統合開発統合結果カプセル化例分析
SSMの統合と機能モジュールの開発が完了したら、次に上記の事例をもとにどのような問題を解決する必要があるかを分析していきます。まず最初の質問は、
Controller層で追加、削除、変更した際にフロントエンドに返されるのはboolean型のデータである
コントローラー層で単一のクエリを実行すると、フロントエンドに返されます。これはオブジェクトです。
コントローラー層のクエリで、フロントエンドに返されるのはすべてコレクションオブジェクトです。
現在、3 つの型があります データ型はフロントエンドに返されますが、ビジネスが成長するにつれて、より多くのデータ型を返す必要があります。フロントエンド開発者にとって、データを解析するときは非常に面倒なので、フロントエンドの場合、バックグラウンドが統一されたデータ結果を返すことができれば、フロントエンドは解析時に一方向で解析できます。開発がより簡単になります。
そこで、返された結果データを統合できるかどうか、そしてその方法を考えます。一般的なアイデアは次のとおりです:
返された結果データをカプセル化するには、次のようにします。結果モデルクラス、データを data 属性にカプセル化します。
返されたデータがどのような操作であるか、操作が成功したかどうかをカプセル化するには、操作結果を code 属性にカプセル化します。
操作が失敗した後に返されるエラー メッセージをカプセル化するには: 特別なメッセージをメッセージ (msg) 属性にカプセル化します。
public class Result{ private Object data; private Integer code; private String msg; }注: Result クラス名とクラス内のフィールドは固定されていません。必要に応じて値を減らし、操作を便利にするためのいくつかの構築方法を提供します。 プレゼンテーション層とフロントエンドデータ送信プロトコルの実装結果のカプセル化結果のカプセル化については、プレゼンテーション層で処理する必要があるため、結果クラスを配置します。コントローラー パッケージ内 もちろん、ドメイン パッケージに置くこともできます。これは可能です。結果のカプセル化を実装するにはどうすればよいですか? 具体的な手順は次のとおりです: ステップ 1: 結果クラスの作成
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 形式に変換されます。ただし、ゲッター メソッドとセッター メソッドが存在する必要があります。 ステップ 2: リターン コードを定義する コード クラス
//状态码 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; }注: コード クラスの定数設計は固定されておらず、必要に応じて増減できます。たとえば、クエリは次のようになります。 GET_OK 、GET_ALL_OK、GET_PAGE_OK などに細分化されます。 ステップ 3: コントローラー クラスの戻り値を変更する
//统一每一个控制器方法返回值 @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 に基づいて書籍をチェックすると、見つからない場合は null が返されます最後にプロジェクトの構造: ステップ 4: サービス テストの開始
##戻り結果は、統一された形式でフロントエンドにすでに返されています。フロントエンドは返された結果をもとに、まず
codeを取得し、コードに基づいて判定し、成功した場合はdata
属性の値を取得し、失敗した場合は、 msg
の値を受け取ります。この値はリマインダーとして使用されます。
以上がJava SSM統合開発統合結果カプセル化例分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。