Gradleプラグイン
概要
Komapperが提供するGradleプラグインは、 データベースのメタデータから次の2種類のKotlinソースコードを生成します。
- エンティティクラス
- マッピング定義
エンティティクラスやマッピング定義については エンティティクラス を参照ください。
Note
Gradleプラグインの利用は必須ではありません。 データベース上にテーブル定義がすでに存在する場合に利用を検討ください。利用方法
プラグインの最新版は Gradleプラグインのポータルのサイト で確認できます。
下記のコードはプラグインを利用したGradleビルドスクリプトの例です。
buildscript {
repositories {
mavenCentral()
}
// TestcontainersとPostgreSQLのJDBCドライバへの依存を定義する
dependencies {
classpath(platform("org.testcontainers:testcontainers-bom:1.17.1"))
classpath("org.testcontainers:postgresql")
classpath("org.postgresql:postgresql:42.3.4")
}
}
// Komapperプラグインの利用を宣言する
plugins {
id("org.komapper.gradle") version "5.0.0"
}
// Komapperプラグインに関する設定を行う
komapper {
generators {
// 利用するデータベースごとにregisterブロックに適当な名前をつけてブロック内に設定を記述する
register("postgresql") {
val initScript = file("src/main/resources/init_postgresql.sql")
// JDBCパラメータの設定。Testcontainers上のPostgreSQLを利用する
jdbc {
driver.set("org.testcontainers.jdbc.ContainerDatabaseDriver")
url.set("jdbc:tc:postgresql:13.3:///test?TC_INITSCRIPT=file:${initScript.absolutePath}")
user.set("test")
password.set("test")
}
packageName.set("org.komapper.example.postgresql")
overwriteEntities.set(true)
overwriteDefinitions.set(true)
}
}
}
上記の設定をした上で下記のコマンドを実行するとエンティティクラスやマッピング定義のコードを生成できます。
$ ./gradlew komapperGenerator
register
に指定した名前を明示しても同じ結果が得られます。
$ ./gradlew komapperPostgresqlGenerator
サンプルアプリケーション も参考にしてください。
パラメータ一覧
register
ブロック内で設定可能なパラメータを示します。
jdbc.driver
JDBCドライバのクラス名を表します。
設定必須です。
jdbc.url
JDBCのURLを表します。
設定必須です。
jdbc.user
JDBCのユーザーを表します。
jdbc.password
JDBCのパスワードを表します。
catalog
データベースのメタデータ取得に使われるカタログです。
この値はパラメータとして DatabaseMetaData#getTables メソッドに渡されます。
schemaPattern
データベースのメタデータ取得に使われるスキーマのパターンです。
SALES%
のようにLIKE述語と同様の記述ができます。
この値はパラメータとして DatabaseMetaData#getTables メソッドに渡されます。
tableNamePattern
データベースのメタデータ取得に使われるテーブルのパターンです。
JOB%
のようにLIKE述語と同様の記述ができます。
この値はパラメータとして DatabaseMetaData#getTables メソッドに渡されます。
tableTypes
データベースのメタデータ取得に使われるテーブルタイプです。
デフォルトの値はTABLE
のみを含んだリストです。
このパラメータは以下のような値を含むことができます。
- TABLE
- VIEW
この値はパラメータとして DatabaseMetaData#getTables メソッドに渡されます。
destinationDir
生成されるKotlinソースコードの出力先です。
デフォルトの値はsrc/main/kotlin
です。
Note
エンティティクラスのソースコードはentities.kt
、マッピング定義のソースコードはentityDefinitions.kt
というファイル名で出力されます。
これらのファイル名は変更できません。
useSelfMapping
セルフマッピングを使うかどうかです。
false
の場合、分離マッピングが使われます。
デフォルトの値はfalse
です。
packageName
生成されるエンティティクラスやマッピング定義クラスのパッケージ名です。
prefix
生成されるエンティティクラスの単純名のプレフィックスです。
デフォルトの値は空文字です。
suffix
生成されるエンティティクラス名のサフィックスです。
デフォルトの値は空文字です。
singularize
生成されるエンティティクラス名を単数化するかどうかを表します。
true
の場合、複数形のテーブル名から単数形のエンティティクラス名を生成します。
デフォルトの値はfalse
です。
useTableNameAsAlias
テーブル名をもとにaliasesプロパティを生成するかどうかを表します。
デフォルトの値はfalse
です。
overwriteEntities
生成されるエンティティクラスのソースコードを上書きするかどうかを表します。
デフォルトの値はfalse
です。
overwriteDefinitions
生成されるマッピング定義のソースコードを上書きするかどうかを表します。
デフォルトの値はfalse
です。
declareAsNullable
生成されるエンティティクラスの全プロパティをNULL許容型として宣言するかどうかを表します。
デフォルトの値はfalse
です。
この値がfalse
の場合、 NULL許容型として宣言するかどうかはプロパティごとにデータベースのメタデータから判定します。
useCatalog
生成されるマッピング定義でカタログ名を明示するかどうかを表します。
デフォルトの値はfalse
です。
useSchema
生成されるマッピング定義でスキーマ名を明示するかどうかを表します。
デフォルトの値はfalse
です。
propertyTypeResolver
生成されるエンティティクラスのプロパティの型を決定するリゾルバです。
デフォルト値はorg.komapper.codegen.PropertyTypeResolver.of()
です。
enquote
SQLの識別子を引用符で囲むことを行う関数です。
デフォルト値はorg.komapper.codegen.Enquote.of()
です。
classNameResolver
生成されるエンティティクラスの名前を決定するリゾルバです。
デフォルト値はorg.komapper.codegen.ClassNameResolver.of(prefix, suffix, singularize)
です。
propertyNameResolver
生成されるエンティティクラスのプロパティの名前を決定するリゾルバです。
デフォルト値はorg.komapper.codegen.PropertyNameResolver.of()
です。
versionPropertyName
@KomapperVersion
アノテーションを付与するプロパティの名前を指定できます。
デフォルトの値は空文字です。
createdAtPropertyName
@KomapperCreatedAt
アノテーションを付与するプロパティの名前を指定できます。
デフォルトの値は空文字です。
updatedAtPropertyName
@KomapperUpdatedAt
アノテーションを付与するプロパティの名前を指定できます。
デフォルトの値は空文字です。