[戻る]

Java読書会BOF「Spring徹底入門 第2版」を読む会 第14回

開催概要

日時

2025年11月15日(土) 10:00-17:00

場所

エポックなかはら 第2会議室

出席者(敬称略)

高橋(智)、遠藤、岩室、井上、藤井、高橋(徹)(記)

本日は、p.548 11.3.5 SELECT(Read)操作の実装から

Chapter 11 Spring + MyBatis

11.3 基本的なCRUD操作

11.3.5 SELECT(Read)操作の実装

  • p.548 インターフェイス実装例の long count()は、JPAなどではどうするか?

    • Spring JPAでは、リポジトリに count() が実装されているので自分で定義する必要はない

  • p.550 マッピング例で、resultMapの定義の中にcapacityがないのはなぜ?

    • capacityは、カラム名とプロパティ名が同一なので省略していると思われる

11.3.6 INSERT(Create)操作の実装

  • p.552 上 アノテーションを使用したSQLの指定例 で、INSERT文を実行するメソッドcreateの戻り値がvoidになっているが、SQLのINSERT文はINSERTした行数(affected rows)が返る。voidでなくintとすると、INSERT文の結果が得られるか?

    • <事後確認> p.553の下1-2行目にUPDATE操作の実装の説明で「更新時の戻り値は(中略)それ以外は数値(intまたはlong)にする。なお、更新件数の判定が不要な場合はvoidでもよい」とあるので、これと同じと考える。

  • UUIDをキーにすることについての議論

    • UUIDは順序性がないのでインデックスに向かない

    • UUID v7は時間順に並ぶのでインデックスに向く

    • PostgreSQL v18では、UUID v7に対応

11.3.7 UPDATE操作の実装

  • 【誤植】 p.553 下2行目 「主キーやユニークキーの更新の場合はboolean」→「主キーやユニークキーで更新の場合はboolean」

  • 同、主キーやユニークキーでの更新時、戻り値をintにしてはいけないのか?

    • 0か1が返るのでいいのでは

11.4 MyBatisでの応用的なCRUD操作

11.4.1 マッピングファイル上での動的SQLの組み立て

  • 【宿題】 p.558 SQLの記述で、list と出てくるがこれは変数名なのか?

Chaper 12 Spring + Thymeleaf

12.1 Tymeleafとは

12.3 Thymeleafを利用したViewの実装

12.3.1 はじめてのThymeleaf

  • output.html で ${echoForm.text} と参照しているechoFormはどのように渡されているのか?

    • Controllerで、POST /echo にマッピングしたメソッドの引数でEchoFormを受けている。これは自動でModelに格納されると4章 p.166に記述あり。

12.3.3 式の構文

  • p.578 比較演算で、属性(th:if)の中で比較演算子(<>)を使うときエスケープ必要?

    • HTMLで属性の値記述の文字列内でどの文字がエスケープ必要か調べようとしましたが、HTMLの仕様はかなり複雑で、またBNF定義がないので難航。

次回

本日は、p.588 12.3.8 Springとの連携の最後まで。 次回は、p.589 12.3.9 テンプレートの共通化からです。

[戻る]