Version v1.0-RC1 of the documentation is no longer actively maintained. The site that you are currently viewing is an archived snapshot. For up-to-date documentation, see the latest version.

アノテーションプロセッシング

概要

コンパイル時、Komapperは マッピング定義 内のアノテーションを処理し、 結果をメタモデルのソースコードとして生成します。 アノテーションの処理とコードの生成には Kotlin Symbol Processing API (KSP)を利用します。

KSPを実行するためには、Gradleビルドスクリプトを次のように記述します。

plugins {
  id("com.google.devtools.ksp") version "1.5.31-1.0.1"
  kotlin("jvm") version "1.5.31"
}

dependencies {
  val komapperVersion = "0.29.0"
  ksp("org.komapper:komapper-processor:$komapperVersion")
}

komapper-processorモジュールにはKSPのアノテーションプロセッサが含まれます。

上記設定後、Gradleのbuildタスクを実行するとbuild/generated/ksp/main/kotlinディレクトリ以下にコードが生成されます。

オプション

オプションによりアノテーションプロセッサの挙動を変更できます。 利用可能なオプションは以下の4つです。

  • komapper.prefix
  • komapper.suffix
  • komapper.namingStrategy
  • komapper.metaObject

オプションを指定するにはGradleのビルドスクリプトで次のように記述します。

ksp {
  arg("komapper.prefix", "")
  arg("komapper.suffix", "Metamodel")
  arg("komapper.namingStrategy", "UPPER_SNAKE_CASE")
  arg("komapper.metaObject", "example.Metamodels")
}

komapper.prefix

生成されるメタモデルクラスのプレフィックスです。 デフォルト値は_(アンダースコア)です。

komapper.suffix

生成されるメタモデルクラスのサフィックスです。 デフォルト値は空文字です。

komapper.namingStrategy

Kotlinのエンティクラスとプロパティからデータベースのテーブルとカラムの名前をどう解決するのかの戦略です。 値にはimplicitlower_snake_caseUPPER_SNAKE_CASEのいずれかを選択できます。 デフォルト値はimplicitです。 解決されたデータベースのテーブルとカラムの名前は生成されるメタモデルのコードの中に含まれます。 なお、@KomapperTable@KomapperColumnで名前が指定される場合この戦略で決定される名前よりも優先されます。

komapper.namingStrategyオプションに指定可能な値の定義は次の通りです。

implicit
エンティティクラスやプロパティの名前をそのままテーブルやカラムの名前とする。
lower_snake_case
エンティティクラスやプロパティの名前をキャメルケースからスネークケースに変換した上で全て小文字にしテーブルやカラムの名前とする。
UPPER_SNAKE_CASE
エンティティクラスやプロパティの名前をキャメルケースからスネークケースに変換した上で全て大文字にしテーブルやカラムの名前とする。

komapper.metaObject

メタモデルのインスタンスを拡張プロパティとして提供するobjectを指定します。 デフォルト値はorg.komapper.core.dsl.Metaです。

最終更新 March 11, 2022: Update the title and linkTitle (cf9ed4f)