#author("2021-06-24T05:42:22+00:00","","") #author("2021-06-24T05:42:29+00:00","","") [[第2回/ToDo管理/管理者機能実装]] * ToDo管理アプリケーションのメンバー機能の実装 [#p2d2a420] ** UI紙芝居 [#d8ec5d1c] - グループで相談しながら,各自で考えよ -- 手書き、エクセル、パワポ、なんでも良い -- 後で見せてください。 ** 実装方針 [#jae00adf] メンバーのユースケースでは,ToDoの取得(UC12, UC15), 登録(UC13),完了(UC14)を行う よって,下記の順番で実装していく - M1: ToDoのエンティティを定義 - M2: ToDoをCRUDするレポジトリを作成 - M3: ToDoの登録フォームを作成 - M4: ToDoを登録,取得,完了するサービスを作成 -- 存在チェックや重複チェックも行う -- ユーザ毎のToDo, Doneを取得する -- 全員のToDo, Doneを取得する - M5: サービスを呼び出すコントローラを作成 -- リクエストマッピング -- 画面生成・遷移 -- ログイン(IC11)はメンバーIDの存在チェックをして,個人ページにリダイレクトすればOK. - M6: 画面用のHTMLテンプレートを作成する *** M1: Entity - エンティティ [#vfbf22ab] - enrity/ToDo.java @Data @AllArgsConstructor @NoArgsConstructor @Entity public class ToDo { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) Long seq; //通し番号 String title; //題目 String mid; //作成者 boolean done; //完了フラグ @Temporal(TemporalType.TIMESTAMP) Date createdAt; //作成日時 @Temporal(TemporalType.TIMESTAMP) Date doneAt; //完了日時 } - @GeneratedValue(...) - IDを自動採番するときには,このように書く - @Temporal - Date型など日時をあらわす属性につける -- TemporalType.DATE - 日付部のみが永続化される -- TemporalType.TIME - 時刻部のみが永続化される -- TemporalType.TIMESTAMP - 日時ともに永続化される *** M2: レポジトリ - Repository [#zeda943e] - repository/ToDoRepository.java -- ヒント:自動実装されるメソッドに加えて,下記のカスタムメソッドを追加する --- midとdoneの値でToDoを検索するメソッド → ユーザのToDoリスト,Doneリストを取得するのに使う --- doneの値でToDoを検索するメソッド → 全員のToDoリスト,Doneリストを取得するのに使う *** M3: フォーム - Form [#l6117cc0] - dto/ToDoForm.java -- 今回の属性はタイトルだけ *** M4: サービス - Service [#i3e56bba] - service/ToDoService.java -- public ToDo createToDo(String mid, ToDoForm form) {/* メンバーmidが新しくToDoを作成する */} -- public ToDo getToDo(Long seq) {/* 番号を指定してToDoを取得 */} -- public List<ToDo> getToDoList(String mid) {/* midのToDoリストを取得 */} -- public List<ToDo> getDoneList(String mid) {/* midのDoneリストを取得 */} -- public List<ToDo> getToDoList() {/* 全員のToDoリストを取得 */} -- public List<ToDo> getDoneList() {/* 全員のDoneリストを取得 */} *** M5: コントローラ - Controller [#k4b2e8ca] - controller/ToDoController.java *** M6: 画面 - HTMLテンプレート [#w2dfaf30] - templates/index.html (アプリTop画面) - 素材 -- &attachref(todo_people.png); - templates/list.html (自分のToDoリスト画面) - templates/alllist.html (みんなのToDoリスト画面) *** 実行&テスト [#y6043e69] - http://localhost:18080/ ** デプロイ [#j87d615f] - http://localhost:8080/ToDoApp/