From 5784889380e4d53aee8d3ca09986faa0469392fe Mon Sep 17 00:00:00 2001 From: yoshidakenji <181298858+kenjiyoshid-a@users.noreply.github.com> Date: Tue, 14 Jan 2025 13:03:11 +0900 Subject: [PATCH] =?UTF-8?q?=E6=A5=BD=E8=A6=B3=E3=83=AD=E3=83=83=E3=82=AF?= =?UTF-8?q?=E5=AF=BE=E5=BF=9C=E3=81=AE=E3=82=BF=E3=82=B9=E3=82=AF=E3=81=AB?= =?UTF-8?q?=E6=AD=A3=E8=A6=8F=E8=A1=A8=E7=8F=BE=E3=81=AE=E8=AA=AC=E6=98=8E?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E8=A8=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infrastructure/build.gradle | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/samples/web-csr/dressca-backend/infrastructure/build.gradle b/samples/web-csr/dressca-backend/infrastructure/build.gradle index f279a4641..8d2d4f696 100644 --- a/samples/web-csr/dressca-backend/infrastructure/build.gradle +++ b/samples/web-csr/dressca-backend/infrastructure/build.gradle @@ -48,6 +48,72 @@ tasks.named('test') { bootJar.enabled = false jar.enabled = true +/* +正規表現と置換のペアをリストにまとめて置き換えを行うことで楽観ロックに対応する。 +置き換えのペアは更新対象の検索方法が Example と PrimaryKey のどちらを利用するかで異なる。 + +◇ Example で検索するメソッドの例( updateByExampleSelective の場合) + + 検索対象 + 1. + + + row_version = #{row.rowVersion,jdbcType=TIMESTAMP}, + + + + + 〇 置換後 + + + + row_version = CURRENT_TIMESTAMP, + + + + +◇ PrimaryKey で検索するメソッドの例( updateByPrimaryKey の場合) + + Example の置き換えに加えて以下を行う。 + + 検索対象 + 1. の直前まで + 2. + + 置換文字列 + 3. and 楽観ロック制御を行う列名 = #{エンティティに変換した際の楽観ロック制御を行う列名,jdbcType=楽観ロック制御を行う列のDB上のデータ型} + + 操作 + 1 、3、 2 の順に並び替える。 + ※二重で置換が起きないように、検索条件に置換する文字列が含まれる場合は置き換えを行わないように制御する。 + + 〇 置換前 + + update catalog_items + set name = #{name,jdbcType=VARCHAR}, + row_version = #{rowVersion,jdbcType=TIMESTAMP} + where id = #{id,jdbcType=BIGINT} + + + 〇 置換後 + + update catalog_items + set name = #{name,jdbcType=VARCHAR}, + row_version = CURRENT_TIMESTAMP + where id = #{id,jdbcType=BIGINT} + and row_version = #{rowVersion,jdbcType=TIMESTAMP} + +*/ task updateMyBatisGeneratorMapperForOptimisticLocking { doLast {