Skip to content
Playground

演習: JdbcClient

この章では、TaskRepository の JDBC を JdbcClient に置き換えます。T- はタスク管理アプリ tasks の問題です。

T-6T-8 で作った TaskRepository は、接続や例外の処理を JDBC で書いていました。本文 JdbcClient による書き換え と同じく、JdbcClient に置き換えて短くします。次のとおり書き換えます。

  • DataSource の代わりに JdbcClient をコンストラクターで受け取る
  • findAll()SELECT title, completed, notes FROM tasksquery(Task.class).list() で取得する
  • save(Task task)INSERT INTO tasks (title, completed, notes) VALUES (:title, :completed, :notes) を名前付きパラメーターで渡し、update() で実行する
  • countActive()SELECT COUNT(*) FROM tasks WHERE completed = falsequery(Integer.class).single() で受け取る
  • try-catchSQLException は書かない

TaskServiceTasksControllertasks.html は変えません。変わるのはデータアクセスの中身です。起動して /tasks を開き、一覧の表示とタスクの追加が T-8 と同じに動けば成功です。

ヒント

query(Task.class) は、列名と Task のフィールド名(titlecompletednotes)が同じなので、行を Task に自動で変換します(結果のマッピング)。saveデータの登録 と同じく :名前paramupdate()countActive1 つの値の取得 と同じく query(型).single() です。

SQLExceptionJdbcClient が非チェック例外の DataAccessException に変えるため、catchthrows も要りません(例外の扱い)。