学習74日目:メンタリング10回目(思考を整理)。

今日の学習時間。

  • Day:74
  • Today:6h
  • Total:455h

学習内容について。

  • アプリ開発
    • フォロー機能
  • メンタリング10回目:30min.

メンタリング内容について。

今日はメンタリングまでに例のフォロー判定を実装させたかったのですが、無理でした。なので、メンターの方に質問しつつ、大まかな解決策を検討しました。以下にメモ書きを書き起こしておきます。ただ、フォロー機能といってもテーブルやページ構成次第で実装方法は異なってくるので参考までに。

Listを使う方法
  1. for文でreports(日報一覧のList)のリスト数の分だけ取り出す
    1. この場合は.setMaxResults(10)なので10
  2. Listを初期化(followFlagList
  3. JPQLで内部結合(Follow.java
    1. f.employee.id(フォローした従業員ID) = :employee(ログインしている従業員IDをセット)
    2. r.employee.id(レポートの従業員ID) = f.follow.id(フォローされている従業員ID)
  4. report.id(レポートのID)をオブジェクトとして選択
    1. [0]:フォローしていない
    2. [1]:フォローしている
  5. request.setAttribute()でセット
  6. JSPで取り出す
    1. varStatus="status.index"回数のプロパティを使用
HashMapを使う方法
  1. Followsテーブルからemployee_id(ログイン中の従業員ID)を条件に、ログイン中のユーザのフォロー状況を抽出する
  2. 1.で取得したリストをIntegerのリストとして保持する
  3. reportsでループを回す時に、閲覧中のemployee_idごとに2.に含まれているかどうかをHashMapとして保持する
  4. 3.で作ったHashMapsetAttributeしてJSPへ送る
  5. jspにて以下のような感じで条件分岐する
    1. <c:when test="${followMap.get(report.employee.id)}">

今日の反省と明日の目標。

もうフォロー判定に何時間かけてるんだって話ですが、あとはこの手順の通りに作業すれば大丈夫なはず。そもそも、画面設計の時点でこうなることは分かっていたのかもしれませんね。実装しやすいように設計を考えることも重要だと感じています。次回は実装しやすい設計を考えよう。もしかしたら、これでも簡単な方なのかもしれませんが。。

明日は上記の方法を2つとも試しながら実装したいと思います。正直なところ、HashMapの使い方がよく分かっていないので、そこも復習しながら。

閉じる