Version v1.17 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.

Gradleプラグイン

概要

Komapperが提供するGradleプラグインは、 データベースのメタデータから次の2種類のKotlinソースコードを生成します。

  • エンティティクラス
  • マッピング定義

エンティティクラスやマッピング定義については エンティティクラス を参照ください。

利用方法

プラグインの最新版は 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 "1.17.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です。

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 アノテーションを付与するプロパティの名前を指定できます。

デフォルトの値は空文字です。

最終更新 March 8, 2024: Release v1.17 (08bccf8)