Version v0.26 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.

Annotation Processing

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

概要

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

KSPを実行するには、KSPのGradleプラグインの設定と下記のGradleの依存関係の宣言が必要です。

val komapperVersion: String by project
dependencies {
  ksp("org.komapper:komapper-processor:$komapperVersion")
}

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

上記設定後、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です。

最終更新 November 27, 2021: Fix the number of options (245dd87)